From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Thomas Rast" <trast@inf.ethz.ch>,
"Stefan Schüßler" <mail@stefanschuessler.de>,
git@vger.kernel.org
Subject: [PATCH 1/2] pull: update unborn branch tip after index
Date: Thu, 20 Jun 2013 18:36:31 -0400 [thread overview]
Message-ID: <20130620223630.GA18675@sigill.intra.peff.net> (raw)
In-Reply-To: <20130620223550.GA21667@sigill.intra.peff.net>
When commit d09e79c taught git to pull into an unborn
branch, it first updated the unborn branch to point at the
pulled commit, and then used read-tree to update the index
and working tree. That ordering made sense, since any
failure of the latter step would be due to filesystem
errors, and one could then recover with "git reset --hard".
Later, commit 4b3ffe5 added extra safety for existing files
in the working tree by asking read-tree to bail out when it
would overwrite such a file. This error mode is much less
"your pull failed due to random errors" and more like "we
reject this pull because it would lose data". In that case,
it makes sense not to update the HEAD ref, just as a regular
rejected merge would do.
This patch reverses the order of the update-ref and
read-tree calls, so that we do not touch the HEAD ref at all if a
merge is rejected. This also means that we would not update
HEAD in case of a transient filesystem error, but those are
presumably less rare (and one can still recover by repeating
the pull, or by accessing FETCH_HEAD directly).
While we're reorganizing the code, we can drop the "exit 1"
from the end of our command chain. We exit immediately
either way, and just calling exit without an argument will
use the exit code from the last command.
Signed-off-by: Jeff King <peff@peff.net>
---
git-pull.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/git-pull.sh b/git-pull.sh
index 638aabb..7904753 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -268,8 +268,8 @@ then
if test -z "$orig_head"
then
- git update-ref -m "initial pull" HEAD $merge_head "$curr_head" &&
- git read-tree -m -u HEAD || exit 1
+ git read-tree -m -u $merge_head &&
+ git update-ref -m "initial pull" HEAD $merge_head "$curr_head"
exit
fi
--
1.8.3.rc2.14.g7eee6b3
next prev parent reply other threads:[~2013-06-20 22:36 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-20 12:36 [PATCH] pull: pull into void by fast-forwarding from empty tree Thomas Rast
2013-06-20 12:47 ` Jeff King
2013-06-20 13:06 ` [PATCH v2] pull: merge into unborn " Thomas Rast
2013-06-20 13:15 ` Jeff King
2013-06-20 13:20 ` Thomas Rast
2013-06-20 13:33 ` Thomas Rast
2013-06-20 13:47 ` Jeff King
2013-06-20 14:29 ` Thomas Rast
2013-06-20 14:22 ` Thomas Rast
2013-06-20 18:43 ` Junio C Hamano
2013-06-20 20:19 ` Jeff King
2013-06-20 20:49 ` Junio C Hamano
2013-06-20 20:55 ` Jeff King
2013-06-20 21:45 ` Junio C Hamano
2013-06-20 22:03 ` Jeff King
2013-06-20 22:35 ` [PATCHv3 0/2] pull into unborn branch safety tree Jeff King
2013-06-20 22:36 ` Jeff King [this message]
2013-06-20 22:38 ` [PATCH 2/2] pull: merge into unborn by fast-forwarding from empty tree Jeff King
2013-06-20 22:52 ` [PATCHv3 0/2] pull into unborn branch safety tree Junio C Hamano
2013-06-20 16:04 ` [PATCH] pull: pull into void by fast-forwarding from empty tree Ramkumar Ramachandra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130620223630.GA18675@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mail@stefanschuessler.de \
--cc=trast@inf.ethz.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).