From: Junio C Hamano <junkio@cox.net>
To: Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
Cc: Andy Parkins <andyparkins@gmail.com>, git@vger.kernel.org
Subject: Re: [PATCH 3/3] Allow whole-tree operations to be started from a subdirectory
Date: Sat, 13 Jan 2007 16:50:36 -0800 [thread overview]
Message-ID: <7vps9iig83.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <200701140111.20671.Josef.Weidendorfer@gmx.de> (Josef Weidendorfer's message of "Sun, 14 Jan 2007 01:11:20 +0100")
Josef Weidendorfer <Josef.Weidendorfer@gmx.de> writes:
> On Friday 12 January 2007 21:56, Junio C Hamano wrote:
>> This updates five commands (merge, pull, rebase, revert and cherry-pick)
>> so that they can be started from a subdirectory.
>>
>> This may not actually be what we want to do. These commands are
>> inherently whole-tree operations,...
>
> Why not add a general "--top" option to the "git" wrapper,
> to temporarily let git change to the toplevel while running
> the command?
>
> The wish to allow git-fetch from subdirectories is the
> inconvenience to have to cd up, and later down. This is
> avoided by running "git --top fetch", and theses people
> should be happy.
Well, git-fetch does not have anything to do with the working
tree, so it does not matter if you run from a subdirectory. You
do not even need --top for it (and you don't with v1.5.0-rc1).
If we replace "git-fetch" in what you said with one of the
commands I listed in the message you quoted, what you said
becomes at least internally consistent. But I do not
necessarily agree with it.
Adding --top and refusing to work without the option gives a
false impression that it is a bug that they do not work from the
top in the current implementation, and someday we might do these
commands limited to the current directory when the user is in a
subdirectory. But for the above commands, it is definitely not
the case. They are inherently whole-tree operations and it
ould actually be a bug to limit their operation to a single
subdirectory.
For example, what would a "merge" limited to the current
directory do? It would probably do the usual 3-way merge for
the current directory and apply the 'ours' strategy for the rest
of the tree.
But that is obviously wrong. The new commit claims that "I
considered the whole tree states these two commits record, and
came up with this another whole tree this commit records -- it
suits my purpose better than either of these other two trees".
Future merges that involve the resulting commit will take this
statement into account, and will revert the changes the other
branch would have brought in outside the current directory if
your merge result is later merged into somebody else's tree.
Rebasing a series of commits on top of some other branch, but
limiting only to the current directory does not make much sense,
either; it would lose the changes to the other parts of the
tree. Losing the changes to the other parts of the tree might
sometimes be what the user would want, but for the most cases
that would not be true. Also what the original log messages say
would not match the set of partial changes limited to the
current directory you are porting forward, so you would need to
reword the logs as well if you are limiting its operation to the
current directory. In other words, it might be sometimes useful
but that is not a "rebase" anymore -- it is something else. The
same discussion applies to the last two commands in the list
(revert and cherry-pick).
So for that reason, I think there are only two valid choices.
Either we insist these commands to be run from the top, or we
always automatically run these commands by cd'ing to the top
ourselves.
next prev parent reply other threads:[~2007-01-14 0:50 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-12 2:43 What's in git.git and announcing GIT v1.5.0-rc1 Junio C Hamano
2007-01-12 3:59 ` [PATCH] reflog-expire: brown paper bag fix Junio C Hamano
2007-01-12 4:02 ` Shawn O. Pearce
2007-01-12 15:01 ` What's in git.git and announcing GIT v1.5.0-rc1 Andy Parkins
2007-01-12 18:35 ` [PATCH] Friendlier error message for commands that can't be run from a subdirectory koreth
2007-01-12 18:39 ` What's in git.git and announcing GIT v1.5.0-rc1 Steven Grimm
2007-01-12 19:10 ` [PATCH] Change to the repository's root directory if needed koreth
2007-01-12 21:18 ` Junio C Hamano
2007-01-12 22:11 ` Steven Grimm
2007-01-12 23:17 ` Junio C Hamano
2007-01-12 20:26 ` [PATCH] Explain "Not a git repository: '.git'" Junio C Hamano
2007-01-12 20:55 ` Junio C Hamano
2007-01-12 20:55 ` [PATCH 1/3] Define cd_to_toplevel shell function in git-sh-setup Junio C Hamano
2007-01-12 20:55 ` [PATCH 2/3] Use cd_to_toplevel in scripts that implement it by hand Junio C Hamano
2007-01-12 20:56 ` [PATCH 3/3] Allow whole-tree operations to be started from a subdirectory Junio C Hamano
2007-01-13 16:42 ` Andy Parkins
2007-01-14 0:11 ` Josef Weidendorfer
2007-01-14 0:21 ` Shawn O. Pearce
2007-01-14 0:39 ` Josef Weidendorfer
2007-01-14 0:50 ` Junio C Hamano [this message]
2007-01-14 0:52 ` Steven Grimm
2007-01-14 1:37 ` Junio C Hamano
2007-01-14 18:13 ` Steven Grimm
2007-01-14 18:29 ` Steven Grimm
2007-01-14 19:36 ` Junio C Hamano
2007-01-14 1:50 ` Junio C Hamano
2007-01-16 15:14 ` Andreas Ericsson
2007-01-14 23:36 ` What's in git.git and announcing GIT v1.5.0-rc1 lamikr
2007-01-15 2:21 ` Horst H. von Brand
2007-01-15 20:54 ` lamikr
2007-01-15 21:56 ` Junio C Hamano
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=7vps9iig83.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=Josef.Weidendorfer@gmx.de \
--cc=andyparkins@gmail.com \
--cc=git@vger.kernel.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).