From: Felipe Contreras <felipe.contreras@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Elijah Newren <newren@gmail.com>,
Ilari Liusvaara <ilari.liusvaara@elisanet.fi>,
Sverre Rabbelier <srabbelier@gmail.com>,
Felipe Contreras <felipe.contreras@gmail.com>
Subject: [PATCH v4 14/14] fast-export: don't handle uninteresting refs
Date: Fri, 2 Nov 2012 03:02:18 +0100 [thread overview]
Message-ID: <1351821738-17526-15-git-send-email-felipe.contreras@gmail.com> (raw)
In-Reply-To: <1351821738-17526-1-git-send-email-felipe.contreras@gmail.com>
They have been marked as UNINTERESTING for a reason, lets respect that.
Currently the first ref is handled properly, but not the rest, so:
% git fast-export master ^master
Would currently throw a reset for master (2nd ref), which is not what we
want.
% git fast-export master ^foo ^bar ^roo
% git fast-export master salsa..tacos
Even if all these refs point to the same object; foo, bar, roo, salsa,
and tacos would all get a reset, and to a non-existing object (invalid
mark :0).
And even more, it would only happen if the ref is pointing to exactly
the same commit, but not otherwise:
% git fast-export ^next next
reset refs/heads/next
from :0
% git fast-export ^next next^{commit}
# nothing
% git fast-export ^next next~0
# nothing
% git fast-export ^next next~1
# nothing
% git fast-export ^next next~2
# nothing
The reason this happens is that before traversing the commits,
fast-export checks if any of the refs point to the same object, and any
duplicated ref gets added to a list in order to issue 'reset' commands
after the traversing. Unfortunately, it's not even checking if the
commit is flagged as UNINTERESTING. The fix of course, is to do
precisely that.
The current behavior is most certainly not what we want. After this patch,
nothing gets exported, because nothing was selected (everything is
UNINTERESTING).
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
builtin/fast-export.c | 4 +++-
t/t9350-fast-export.sh | 6 ++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index 26f6d1c..7a310e4 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -529,7 +529,9 @@ static void get_tags_and_duplicates(struct object_array *pending,
* sure it gets properly upddated eventually.
*/
if (commit->util || commit->object.flags & SHOWN)
- string_list_append(extra_refs, full_name)->util = commit;
+ if (!(commit->object.flags & UNINTERESTING))
+ string_list_append(extra_refs, full_name)->util = commit;
+
if (!commit->util)
commit->util = full_name;
}
diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh
index 67a7372..9b53ba7 100755
--- a/t/t9350-fast-export.sh
+++ b/t/t9350-fast-export.sh
@@ -469,4 +469,10 @@ test_expect_success 'refs are updated even if no commits need to be exported' '
test_cmp expected actual
'
+test_expect_success 'proper extra refs handling' '
+ git fast-export master ^master master..master > actual &&
+ echo -n > expected &&
+ test_cmp expected actual
+'
+
test_done
--
1.8.0
prev parent reply other threads:[~2012-11-02 2:03 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-02 2:02 [PATCH v4 00/14] fast-export and remote-testgit improvements Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 01/14] fast-export: avoid importing blob marks Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 02/14] remote-testgit: fix direction of marks Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 03/14] Rename git-remote-testgit to git-remote-testpy Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 04/14] Add new simplified git-remote-testgit Felipe Contreras
2012-11-02 13:55 ` Stefano Lattarini
2012-11-02 14:00 ` Jeff King
2012-11-02 15:42 ` Felipe Contreras
2012-11-02 16:03 ` Stefano Lattarini
2012-11-02 16:16 ` Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 05/14] remote-testgit: get rid of non-local functionality Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 06/14] remote-testgit: remove irrelevant test Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 07/14] remote-testgit: cleanup tests Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 08/14] remote-testgit: exercise more features Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 09/14] remote-testgit: report success after an import Felipe Contreras
2012-11-02 13:58 ` Stefano Lattarini
2012-11-02 15:46 ` Felipe Contreras
2012-11-02 16:08 ` Stefano Lattarini
2012-11-02 16:19 ` Felipe Contreras
2012-11-02 16:23 ` Stefano Lattarini
2012-11-02 17:19 ` Jeff King
2012-11-02 2:02 ` [PATCH v4 10/14] remote-testgit: make clear the 'done' feature Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 11/14] fast-export: trivial cleanup Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 12/14] fast-export: fix comparison in tests Felipe Contreras
2012-11-02 2:02 ` [PATCH v4 13/14] fast-export: make sure updated refs get updated Felipe Contreras
2012-11-02 2:02 ` Felipe Contreras [this message]
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=1351821738-17526-15-git-send-email-felipe.contreras@gmail.com \
--to=felipe.contreras@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=ilari.liusvaara@elisanet.fi \
--cc=newren@gmail.com \
--cc=peff@peff.net \
--cc=srabbelier@gmail.com \
/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).