@@ -31,9 +31,9 @@ use lib::core::rewrite::{
31
31
RepoResource ,
32
32
} ;
33
33
use lib:: git:: {
34
- process_diff_for_record, update_index , CategorizedReferenceName , FileMode , GitRunInfo ,
35
- MaybeZeroOid , NonZeroOid , Repo , ResolvedReferenceInfo , Stage , UpdateIndexCommand ,
36
- WorkingCopyChangesType , WorkingCopySnapshot ,
34
+ process_diff_for_record, summarize_diff_for_temporary_commit , update_index ,
35
+ CategorizedReferenceName , FileMode , GitRunInfo , MaybeZeroOid , NonZeroOid , Repo ,
36
+ ResolvedReferenceInfo , Stage , UpdateIndexCommand , WorkingCopyChangesType , WorkingCopySnapshot ,
37
37
} ;
38
38
use lib:: try_exit_code;
39
39
use lib:: util:: { ExitCode , EyreExitOr } ;
@@ -158,6 +158,41 @@ fn record(
158
158
) ?) ;
159
159
}
160
160
} else {
161
+ let messages = if messages. is_empty ( ) && stash {
162
+ let diff_stats = {
163
+ let ( old_tree, new_tree) = match working_copy_changes_type {
164
+ WorkingCopyChangesType :: Unstaged => {
165
+ let old_tree = snapshot. commit_stage0 . get_tree ( ) ?;
166
+ let new_tree = snapshot. commit_unstaged . get_tree ( ) ?;
167
+ ( Some ( old_tree) , new_tree)
168
+ }
169
+ WorkingCopyChangesType :: Staged => {
170
+ let old_tree = match snapshot. head_commit {
171
+ None => None ,
172
+ Some ( ref commit) => Some ( commit. get_tree ( ) ?) ,
173
+ } ;
174
+ let new_tree = snapshot. commit_stage0 . get_tree ( ) ?;
175
+ ( old_tree, new_tree)
176
+ }
177
+ WorkingCopyChangesType :: None | WorkingCopyChangesType :: Conflicts => {
178
+ unreachable ! ( "already handled via early exit" )
179
+ }
180
+ } ;
181
+
182
+ let diff = repo. get_diff_between_trees (
183
+ effects,
184
+ old_tree. as_ref ( ) ,
185
+ & new_tree,
186
+ 0 , // we don't care about the context here
187
+ ) ?;
188
+
189
+ summarize_diff_for_temporary_commit ( & diff) ?
190
+ } ;
191
+
192
+ vec ! [ format!( "stash: {diff_stats}" ) ]
193
+ } else {
194
+ messages
195
+ } ;
161
196
let args = {
162
197
let mut args = vec ! [ "commit" ] ;
163
198
args. extend ( messages. iter ( ) . flat_map ( |message| [ "--message" , message] ) ) ;
0 commit comments