From: Junio C Hamano <gitster@pobox.com>
To: Stefan Beller <sbeller@google.com>
Cc: Patrick Lehmann <Patrick.Lehmann@plc2.de>,
Lars Schneider <larsxschneider@gmail.com>,
Git Mailinglist <git@vger.kernel.org>
Subject: Re: Restoring detached HEADs after Git operations
Date: Mon, 19 Jun 2017 10:55:07 -0700 [thread overview]
Message-ID: <xmqqefufuakk.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <CAGZ79kY0gwk7KRY2iAVTXPBjPzx+mkciVWRR2z2cDgiBjQ2uuw@mail.gmail.com> (Stefan Beller's message of "Mon, 19 Jun 2017 09:37:01 -0700")
Stefan Beller <sbeller@google.com> writes:
> On Mon, Jun 19, 2017 at 2:52 AM, Patrick Lehmann
> <Patrick.Lehmann@plc2.de> wrote:
>> Hello Lars,
>>
>> for your questions:
>>> If there are multiple branches with the same hash then your script would pick the first one. Can you imagine a situation where this would be a problem?
>>
>> I can't think of a good solution to resolve it automatically. Maybe a script could print that there are multiple possibilities and it choose the first branch in the list.
>>
>>
>>> Plus, you are looking only at local branches. Wouldn't it make sense to look at remote branches, too?
>>
>> This is also related to restoring tags. If we go this way, we should have this priority list:
>> - local branches
>> - remote branches
>
> For remote branches you would create a local branch of the same name
> (if such a branch would not exist, possibly setting it up to track that remote
> branch)?
>
>> - tags
>
> as said in the other email and similar to remote branches, we'd not want to have
> HEAD pointing to them directly but somehow have a local branch.
Let's step back a bit. We detach the HEAD for a good reason, no?
Why is it a good idea to move them back on to a branch picked among
multiple ones that all happen to be pointing at the same commit?
The user may build on a history of a submodule, and then may push
the result out to a particular branch at the other side; that is
when being on a named branch in the submodule becomes useful, but
even then I do not think randomly picking one branch and be on it
is a good thing to do.
I would understand the workflow would go more like so:
- You do something at the superproject (e.g. create a new branch X
from an existing commit and check it out), which results in
submodules' HEADs getting detached at the commits bound to the
superproject's tree.
- Because you want to make changes to both submodules and the
superproject in a consistent way, you'd want to commit changes to
all of these repositories and the push the result out in an
atomic way.
- Hence you tell "Hey, Git, I want all the submodules that I
modified to be on branch X" from the superproject.
- This may succeed in a submodule where X is a new name, or the
current tip of branch X is an ancestor of the detached HEAD.
- This may fail in a submodule where there is branch X that does
not want to move to the detached HEAD's state. In this latter
case, the user needs to deal with the situation (perhaps the
old X is expendable; perhaps the HEAD's commit may need to be
merged to old X; perhaps there are other cases).
though.
next prev parent reply other threads:[~2017-06-19 17:55 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-19 8:46 Restoring detached HEADs after Git operations Patrick Lehmann
2017-06-19 9:30 ` Lars Schneider
2017-06-19 9:52 ` AW: " Patrick Lehmann
2017-06-19 16:37 ` Stefan Beller
2017-06-19 17:34 ` AW: " Patrick Lehmann
2017-06-19 17:47 ` Stefan Beller
2017-06-19 18:09 ` AW: " Patrick Lehmann
2017-06-19 19:21 ` Stefan Beller
2017-06-19 20:13 ` AW: " Patrick Lehmann
2017-06-19 17:55 ` Junio C Hamano [this message]
2017-06-19 19:11 ` Stefan Beller
2017-06-19 16:31 ` Stefan Beller
2017-06-19 17:01 ` Jeff King
2017-06-19 17:56 ` Ævar Arnfjörð Bjarmason
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=xmqqefufuakk.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=Patrick.Lehmann@plc2.de \
--cc=git@vger.kernel.org \
--cc=larsxschneider@gmail.com \
--cc=sbeller@google.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.