From: Stephen & Linda Smith Date: Fri, 12 Feb 2016 01:04:03 GMT Subject: Re: Bug report: 'git commit --dry-run' corner case: returns error ("nothing to commit") when all conflicts resolved to HEAD Message-ID: <2471685.OJU1dNe0yn@thunderbird> In-Reply-To: <1649296.sC1eN3ni6k@thunderbird> On Monday, February 08, 2016 06:55:17 PM Stephen & Linda Smith wrote: > > #!/bin/bash > > mkdir test-repository || exit 1 > > cd test-repository > > git init > > echo "Initial contents, unimportant" > test-file > > git add test-file > > git commit -m "Initial commit" > > echo "commit-1-state" > test-file > > git commit -m "commit 1" -i test-file > > git tag commit-1 > > git checkout -b branch-2 HEAD^1 > > echo "commit-2-state" > test-file > > git commit -m "commit 2" -i test-file > > > > # Creates conflicted state. > > git merge --no-commit commit-1 > > > > # Resolved entirely to commit-2, aka HEAD. > > echo "commit-2-state" > test-file > > # If we'd set to commit-1=state, all would work as expected (changes vs HEAD). > > git add test-file > > > > # ===== Bug is here. > > git commit --dry-run && echo "Git said something to commit" \ > > || echo "Git said NOTHING to commit" With the '--dry-run' switch, dry_run_commit() is called which returns 1 since run_status() is returning the wt_status commitable field which has a value of 0. That field is only set in one place (wt_status_print_updated) which isn't getting called directly or indirectly by run_status. I checked this by code inspection as well as by instrumenting the code. I'm not sure that we want to add a call to wt_status_print_updated in run_status since I don't believe we want the print statements. An alternative might be to create a new function. > > > > git commit -m "Something to commit after all" && echo "Commit went through" > > > > git log --pretty=oneline