Skip to content

Commit 2864e85

Browse files
committed
Merge branch 'os/catch-rename'
The problem can be reproduced on Linux with this sequence: 1. Run git gui from a terminal. 2. Edit the commit message and wait for at least 2 seconds. 3. Terminate the instance from the terminal, for example with Ctrl-C, to simulate crash. This leaves the file .git/GITGUI_BCK behind. 4. Start two instances of git gui &. At this point the first instance can be closed (it renames .git/GITGUI_BCK to .git/GITGUI_MSG), but the seconds brings an error message about the absent file and cannot be closed thereafter and must be killed from the command line. The renaming that happens by the first instance is the correct action and need not be repeated by the second instance. It is the correct action to ignore the failed renaming. On the other hand, the second instance could just edit the commit message again, wait 2 seconds to write GITGUI_BCK, and then can be closed without failing. At this point, since the user has edited the message, it is again correct to preserve the edited version in GITGUI_MSG. * os/catch-rename: git-gui: fix inability to quit after closing another instance
2 parents c1db988 + f402c79 commit 2864e85

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

git-gui.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2301,7 +2301,7 @@ proc do_quit {{rc {1}}} {
23012301
#
23022302
set save [gitdir GITGUI_MSG]
23032303
if {$GITGUI_BCK_exists && ![$ui_comm edit modified]} {
2304-
file rename -force [gitdir GITGUI_BCK] $save
2304+
catch { file rename -force [gitdir GITGUI_BCK] $save }
23052305
set GITGUI_BCK_exists 0
23062306
} elseif {[$ui_comm edit modified]} {
23072307
set msg [string trim [$ui_comm get 0.0 end]]

0 commit comments

Comments
 (0)