@@ -11,38 +11,69 @@ class GitSimCommit(GitSimBaseCommand):
1111 def __init__ (self , scene ):
1212 super ().__init__ (scene )
1313 self .maxrefs = 2
14- self .defaultNumCommits = 4
15- self .numCommits = 4
14+ self .defaultNumCommits = 4 if not self . scene . args . amend else 5
15+ self .numCommits = 4 if not self . scene . args . amend else 5
1616 self .hide_first_tag = True
1717
1818 try :
1919 self .selected_branches .append (self .repo .active_branch .name )
2020 except TypeError :
2121 pass
2222
23+ if self .scene .args .amend and self .scene .args .message == "New commit" :
24+ print (
25+ "git-sim error: The --amend flag must be used with the -m flag to specify the amended commit message."
26+ )
27+ sys .exit (1 )
28+
2329 def execute (self ):
2430 print (
2531 "Simulating: git "
2632 + self .scene .args .subcommand
33+ + (" --amend" if self .scene .args .amend else "" )
2734 + ' -m "'
2835 + self .scene .args .message
2936 + '"'
3037 )
3138
3239 self .show_intro ()
3340 self .get_commits ()
41+
42+ if self .scene .args .amend :
43+ tree = self .repo .tree ()
44+ amended = git .Commit .create_from_tree (
45+ self .repo ,
46+ tree ,
47+ self .scene .args .message ,
48+ )
49+ self .commits [0 ] = amended
50+
3451 self .parse_commits (self .commits [self .i ])
3552 self .center_frame_on_commit (self .commits [0 ])
36- self .setup_and_draw_parent (self .commits [0 ], self .scene .args .message )
53+
54+ if not self .scene .args .amend :
55+ self .setup_and_draw_parent (self .commits [0 ], self .scene .args .message )
56+ else :
57+ self .draw_ref (self .commits [0 ], self .drawnCommitIds [amended .hexsha ])
58+ self .draw_ref (
59+ self .commits [0 ],
60+ self .drawnRefs ["HEAD" ],
61+ text = self .repo .active_branch .name ,
62+ color = m .GREEN ,
63+ )
64+
3765 self .recenter_frame ()
3866 self .scale_frame ()
39- self .reset_head_branch ("abcdef" )
40- self .vsplit_frame ()
41- self .setup_and_draw_zones (
42- first_column_name = "Working directory" ,
43- second_column_name = "Staging area" ,
44- third_column_name = "New commit" ,
45- )
67+
68+ if not self .scene .args .amend :
69+ self .reset_head_branch ("abcdef" )
70+ self .vsplit_frame ()
71+ self .setup_and_draw_zones (
72+ first_column_name = "Working directory" ,
73+ second_column_name = "Staging area" ,
74+ third_column_name = "New commit" ,
75+ )
76+
4677 self .fadeout ()
4778 self .show_outro ()
4879
0 commit comments