git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC] add test cases for the --repo option to git push

From
Michael J Gruber <git@drmicha.warpmail.net>
Date
Feb 27, 2009, 10:42 UTC
Message-ID
<49A7C3A7.6060202@drmicha.warpmail.net>
In-Reply-To
<7vfxi1t99u.fsf@gitster.siamese.dyndns.org>
Junio C Hamano venit, vidit, dixit 26.02.2009 18:09:
Show 9 quoted lines
> Michael J Gruber <git@drmicha.warpmail.net> writes:
> 
>> First of all: I define good/bad as matching the documentation.
> 
> Ok, I was primarily working from this:
> 
> commit bcc785f611dc6084be75999a3b6bafcc950e21d6
> Author: Linus Torvalds <torvalds@osdl.org>
> Date:   Mon Oct 30 08:28:59 2006 -0800
[snip]
> You will see that:
> 
>  (1) bf07cc5 (i.e. J6t's documentation) passes your tests;
Hmm, I don't see that, we must be doing something differently, see below.
Show 11 quoted lines
>  (2) somewhere between that and v1.6.2-rc2, there is a regression to make
>      your test fail.
> 
> if the above conjecture is true, and we may want to fix that regression to
> match the documentation.
> 
> On the other hand, if bf07cc5 does not pass your tests, it means that the
> documentation update was the cause of the confusion, and it is not the
> behaviour that needs to be fixed.
> 
> Sorry, but I do not have time today to look into this.  Could you help?

I'll try and provide the necessary info below, but I think there is a decision to be made about the desired order of priorities for "repo argument", "repo option (--repo=)" and "tracking info config (branch.$branch.remote=)".

Current code: argument > option > track config > 'origin' Current doc: argument > track config > option > 'origin'

I'd say the documented version is more natural, meaning --repo=$repo is fully equivalent to changing "origin" to "$repo".

Now, here's if you want to know the details:

When Linus introduced "--repo" there was no heeding of the tracking info at all:

bcc785f (git push: add verbose flag and allow overriding of default target repository, 2006-10-30) Linus introduces --repo.

5751f49 (Move remote parsing into a library file out of builtin-push., 2007-05-12) Daniel Barkalow introduces the use of branch.$branch.remote info for the repo if git push has no other repo arguments nor --repo options.

378c483 (Use parseopts in builtin-push, 2007-11-04) Daniel switches git-push to parseopts, without changing the behaviour.

bf07cc5 (git-push.txt: Describe --repo option in more detail, 2008-10-07) J6t writes the current version of the doc.

Using a trimmed down ./t5516-fetch-push.sh from my patch (and a copy of current test-lib), all 4 of them give the same results:

*   ok 1: setup
*   ok 2: push with --repo=repourl from non-tracking branch
*   ok 3: push with --repo=remoterepo from non-tracking branch
* FAIL 4: push with --repo=repo from tracking branch with bad config
                mk_test heads/master &&
                git config branch.master.remote origin &&
                test_must_fail git push --repo=testrepo
* FAIL 5: push with --repo=repo from tracking branch with good config
                mk_test heads/master &&
                git config branch.master.remote testrepo &&
                git push --repo=origin &&
                check_push_result $the_commit heads/master
[testrepo exists, origin does not]

Note that bcc785f was not even supposed to heed the value of branch.master.remote, so it's clear they fail 4&5. 2&3 only test whether --repo is considered if there's no other info, so it's clear they pass (versions without bcc785f would fail).

Cheers, Michael

Previous: Jay SoffianNext: Junio C Hamano
Message 9 of 13 in “git push usage”
  1. Jay SoffianFeb 20, 2009
  2. Jay SoffianFeb 21, 2009
  3. [RFC] add test cases for the --repo option to git pushMichael J Gruber, Feb 24, 2009
  4. Junio C HamanoFeb 25, 2009
  5. Michael J GruberFeb 26, 2009
  6. Junio C HamanoFeb 26, 2009
  7. Michael J GruberFeb 26, 2009
  8. Jay SoffianFeb 26, 2009
  9. Michael J GruberFeb 27, 2009
  10. Junio C HamanoFeb 27, 2009
  11. Jay SoffianFeb 27, 2009
  12. Linus TorvaldsFeb 27, 2009
  13. Jay SoffianFeb 27, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.