From: Junio C Hamano <gitster@pobox.com>
To: Miklos Vajna <vmiklos@frugalware.org>
Cc: Jeff King <peff@peff.net>, Brandon Casey <casey@nrlssc.navy.mil>,
git@vger.kernel.org
Subject: Re: [PATCH 3/4] git-remote rename: support branches->config migration
Date: Tue, 11 Nov 2008 20:22:38 -0800 [thread overview]
Message-ID: <7viqqtshdd.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: 20081112020158.GK24201@genesis.frugalware.org
Miklos Vajna <vmiklos@frugalware.org> writes:
> On Tue, Nov 11, 2008 at 04:49:14PM -0800, Junio C Hamano <gitster@pobox.com> wrote:
>> There is something fishy going on between 2/4 and 3/4. 2/4 was advertised
>> to migrate remotes to config and had a call to migrate_file() for that
>> purpose. Here this one now allows to convert branches but there is no
>> change to the callsite of migrate_file().
>>
>> Which would mean that 2/4 would convert branches/foo too. And this one is
>> only to remove the leftover branches/foo file.
>>
>> Or am I utterly confused?
>
> The trick is that 2/4 already added support for remotes/foo as it uses
> remote_get() and that detects remotes/foo as well, but that is
> completely unintentional.
That is not a trick; it merely is a broken code.
The function migrate_file() introduced by [2/4] is called for any remote
definition that did not come from config (by definition, it either came
from remotes/foo or branches/foo). The function adds the entries for the
given remote definition to the config file, and then removes remotes/foo
file if the remote definition came from it. So it is a logically
consistent change if you only called this function only for remote
definitions that came from remotes/foo.
But the function is called for a remote definition that originally came
from branches/foo as well. It happily adds the definition to the config,
even though it *fails to remove* branches/foo file.
Do you still think 2/4 is a logically contained good change?
If you apply this to 5505 (taken from 3/4, but removing the check for
branches/origin file), and look at resulting t/trash*/six/.git/config
file, you will see you have already migrated the remote definition to the
config.
diff --git i/t/t5505-remote.sh w/t/t5505-remote.sh
index 1567631..60bb9e5 100755
--- i/t/t5505-remote.sh
+++ w/t/t5505-remote.sh
@@ -364,4 +364,15 @@ test_expect_success 'migrate a remote from named file in $GIT_DIR/remotes' '
test "$(git config remote.origin.fetch)" = "refs/heads/master:refs/heads/origin")
'
-test_done
+test_expect_success 'migrate a remote from named file in $GIT_DIR/branches' '
+ git clone one six &&
+ origin_url=$(pwd)/one &&
+ (cd six &&
+ git remote rm origin &&
+ echo "$origin_url" > .git/branches/origin &&
+ git remote rename origin origin &&
+ test "$(git config remote.origin.url)" = "$origin_url" &&
+ test "$(git config remote.origin.fetch)" = "refs/heads/master:refs/heads/origin")
+'
+
+: test_done
next prev parent reply other threads:[~2008-11-12 4:24 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-22 0:23 [PATCH] Implement git remote mv Miklos Vajna
2008-10-22 16:52 ` Brandon Casey
2008-10-23 1:18 ` Miklos Vajna
2008-10-23 3:52 ` Jeff King
2008-10-23 12:56 ` [PATCH] Implement git remote rename Miklos Vajna
2008-10-24 23:33 ` Junio C Hamano
2008-10-25 12:58 ` [PATCH 0/2] Fixes for git branch -m / update-ref --no-deref -d Miklos Vajna
2008-10-25 12:58 ` [PATCH 1/2] Fix git branch -m for symrefs Miklos Vajna
2008-10-25 12:58 ` [PATCH 2/2] Fix git update-ref --no-deref -d Miklos Vajna
2008-10-25 18:31 ` [PATCH 1/2] Fix git branch -m for symrefs Junio C Hamano
2008-10-26 2:33 ` [PATCH 0/3] symref rename/delete fixes Miklos Vajna
2008-10-26 2:33 ` [PATCH 1/3] Fix git branch -m for symrefs Miklos Vajna
2008-10-26 2:33 ` [PATCH 2/3] rename_ref(): handle the case when the reflog of a ref does not exist Miklos Vajna
2008-10-26 2:33 ` [PATCH 3/3] Fix git update-ref --no-deref -d Miklos Vajna
2008-10-27 5:31 ` [PATCH 0/3] symref rename/delete fixes Junio C Hamano
2008-10-27 8:50 ` Miklos Vajna
2008-10-27 19:50 ` Miklos Vajna
2008-10-27 19:50 ` [PATCH 1/3] Disallow git branch -m for symrefs Miklos Vajna
2008-10-27 19:50 ` [PATCH 2/3] rename_ref(): handle the case when the reflog of a ref does not exist Miklos Vajna
2008-10-27 19:50 ` [PATCH 3/3] Fix git update-ref --no-deref -d Miklos Vajna
2008-10-28 23:45 ` [PATCH 0/3] symref rename/delete fixes Miklos Vajna
2008-10-29 0:05 ` [PATCH] git branch -m: forbid renaming of a symref Miklos Vajna
2008-11-03 18:26 ` [PATCH] Implement git remote rename Miklos Vajna
2008-11-10 20:42 ` Miklos Vajna
2008-11-10 20:43 ` [PATCH 1/4] remote: add a new 'origin' variable to the struct Miklos Vajna
2008-11-10 20:43 ` [PATCH 2/4] git-remote rename: support remotes->config migration Miklos Vajna
2008-11-10 20:43 ` [PATCH 3/4] git-remote rename: support branches->config migration Miklos Vajna
2008-11-10 20:43 ` [PATCH 4/4] git-remote: document the migration feature of the rename subcommand Miklos Vajna
2008-11-12 0:49 ` [PATCH 3/4] git-remote rename: support branches->config migration Junio C Hamano
2008-11-12 2:01 ` Miklos Vajna
2008-11-12 4:22 ` Junio C Hamano [this message]
2008-11-12 17:11 ` [PATCH v2 0/4] " Miklos Vajna
2008-11-12 17:11 ` [PATCH 1/4] remote: add a new 'origin' variable to the struct Miklos Vajna
2008-11-12 17:11 ` [PATCH 2/4] git-remote rename: support remotes->config migration Miklos Vajna
2008-11-12 17:11 ` [PATCH 3/4] git-remote rename: support branches->config migration Miklos Vajna
2008-11-12 17:11 ` [PATCH 4/4] git-remote: document the migration feature of the rename subcommand Miklos Vajna
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=7viqqtshdd.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=casey@nrlssc.navy.mil \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
--cc=vmiklos@frugalware.org \
/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).