From: Uwe Brauer <oub@mat.ucm.es>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Uwe Brauer" <oub@mat.ucm.es>,
"Rafael Ascensão" <rafa.almas@gmail.com>,
git@vger.kernel.org, "Alban Gruin" <alban.gruin@gmail.com>
Subject: Re: [problem with name-rev]
Date: Tue, 20 Aug 2019 21:34:22 +0200 [thread overview]
Message-ID: <87k1b7k4w1.fsf@mat.ucm.es> (raw)
In-Reply-To: xmqqh86bvgsz.fsf@gitster-ct.c.googlers.com
[-- Attachment #1: Type: text/plain, Size: 4658 bytes --]
>>> "JCH" == Junio C Hamano <gitster@pobox.com> writes:
> Uwe Brauer <oub@mat.ucm.es> writes:
>> Gives
>> * changeset: ae68dbe:master
>> |\ user: Uwe Brauer
>> | | date: Tue Aug 20 16:25:53 2019 +0200
>> | | summary: 1.2.1/1.1
>> | |
>> | * changeset: c00bb5d:master^2
>> | | user: Uwe Brauer
>> | | date: Tue Aug 20 16:25:53 2019 +0200
>> | | summary: 1.2.1
>> | |
>> | * changeset: 54c9230:master^2~1
>> | | user: Uwe Brauer
>> | | date: Tue Aug 20 16:25:53 2019 +0200
>> | | summary: 1.2
>> | |
>> * | changeset: da0712f:master~1
>> |/ user: Uwe Brauer
>> | date: Tue Aug 20 16:25:53 2019 +0200
>> | summary: 1.1
>> |
>> * changeset: 8eb999d:master~2
>> user: Uwe Brauer
>> date: Tue Aug 20 16:25:53 2019 +0200
>> summary: 1
>>
>> That looks odd.
>>
>> Any comments?
> When you make a merge like the ae68dbe, merging a topic with two
> commits 54c9230 and c00bb5d into the then-current tip of the master
> branch da0712f, _all_ direct parents are recorded in the resulting
> merge commit, so the first parent of it is denoted as ae68dbe~1
> (which is da0712f) and the second parent of it ae68dbe^2 (which is
> c00bb5d).
> There is no linear ordering between these two commits, so c00bb5d
> will *never* be named as master~<some-number>. As a commit on a
> side branch, its description from the tip of 'master' will always
> involve some ^2 (the second parent of some merge commit) somewhere
> in its name-rev result.
Hm I realize that I understand git much less than I thought (I thought
it is like mercurial, where git branches are mercurial bookmarks more or
less). It turns out that this is not the case.
Take the following part of what I did
git init
echo 1 > 1
git add 1
git commit -m 1
echo 1.1 > 1
git add .
git commit -m 1.1
git checkout -b foo master~1
echo 1.2 > 1
git add .
git commit -m 1.2
echo 1.2.1 > 1
git add .
git commit -m 1.2.1
git checkout master
There are 4 commits.
But
Git --log --graph --decorate
Returns
* commit 98922f82932cd1bef58bebf0229367922bca45fc (HEAD -> master)
| Author: Uwe Brauer <oub@mat.ucm.es>
| Date: Tue Aug 20 21:19:59 2019 +0200
|
| 1.1
|
* commit 8f565d59c356a6038e3d8a7f5dcd2e4a39ae1bb4
Author: Uwe Brauer <oub@mat.ucm.es>
Date: Tue Aug 20 21:19:59 2019 +0200
If I would do the same with mercurial (either with bookmarks or with
named branches) I receive
hg init
echo 1 > 1
hg add 1
hg commit -m 1
hg branch foo
echo 1.1 > 1
hg add .
hg commit -m 1.1
hg branch master
echo 1.2 > 1
hg add .
hg commit -m 1.2
echo 1.2.1 > 1
hg add .
hg commit -m 1.2.1
hg checkout master
@ changeset: 3:9ebcc17a6389
| branch: master
| tag: tip
| user: Uwe Brauer <oub@mat.ucm.es>
| date: Tue Aug 20 21:27:05 2019 +0200
| summary: 1.2.1
|
o changeset: 2:e02d297e2f75
| branch: master
| user: Uwe Brauer <oub@mat.ucm.es>
| date: Tue Aug 20 21:27:04 2019 +0200
| summary: 1.2
|
o changeset: 1:7ddaef206d57
| branch: foo
| user: Uwe Brauer <oub@mat.ucm.es>
| date: Tue Aug 20 21:27:04 2019 +0200
| summary: 1.1
|
o changeset: 0:dbf3c9975cf3
user: Uwe Brauer <oub@mat.ucm.es>
date: Tue Aug 20 21:27:03 2019 +0200
summary: 1
Funny enough if I convert the git repo, to a hg repo either with hg
convert or with hg clone (and the hg-git plugin)
I receive a different graph
o changeset: 3:e7b2696c94fb
| bookmark: master
| tag: tip
| parent: 0:5dfd9027787a
| user: Uwe Brauer <oub@mat.ucm.es>
| date: Tue Aug 20 21:19:59 2019 +0200
| summary: 1.1
|
| o changeset: 2:277f6423b9c8
| | bookmark: foo
| | user: Uwe Brauer <oub@mat.ucm.es>
| | date: Tue Aug 20 21:19:59 2019 +0200
| | summary: 1.2.1
| |
| o changeset: 1:3529c82f37ae
|/ user: Uwe Brauer <oub@mat.ucm.es>
| date: Tue Aug 20 21:19:59 2019 +0200
| summary: 1.2
|
o changeset: 0:5dfd9027787a
user: Uwe Brauer <oub@mat.ucm.es>
date: Tue Aug 20 21:19:59 2019 +0200
summary: 1
Anyhow, I don't want this message to be interpreted as a flamewar of
sorts.
I don't really know how the import functions work, but I see that git
and mercurial treat commits which look simple to me very differently.
Uwe Brauer
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5025 bytes --]
next prev parent reply other threads:[~2019-08-20 19:34 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-15 8:35 git log --graph with a sort of local revision number Uwe Brauer
2019-08-18 19:00 ` Rafael Ascensão
2019-08-18 19:16 ` Uwe Brauer
2019-08-18 20:46 ` Uwe Brauer
2019-08-18 20:55 ` [SOLVED] (was: git log --graph with a sort of local revision number) Uwe Brauer
2019-08-20 14:32 ` [problem with name-rev] " Uwe Brauer
2019-08-20 15:06 ` SZEDER Gábor
2019-08-20 17:49 ` Rafael Ascensão
2019-08-20 18:21 ` [problem with name-rev] Junio C Hamano
2019-08-20 19:34 ` Uwe Brauer [this message]
2019-08-20 19:57 ` Phil Hord
2019-08-21 7:50 ` Uwe Brauer
2019-08-21 12:37 ` Uwe Brauer
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87k1b7k4w1.fsf@mat.ucm.es \
--to=oub@mat.ucm.es \
--cc=alban.gruin@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=rafa.almas@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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).