From: Elijah Newren <newren@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Cc: "Shawn O. Pearce" <spearce@spearce.org>
Subject: fast-import, merges, and file changes -- lack of clarity in docs, possible minor bug, or PEBKAC?
Date: Mon, 16 Feb 2009 17:28:44 -0700 [thread overview]
Message-ID: <51419b2c0902161628x7a3475e6p2a70310e5b294444@mail.gmail.com> (raw)
Hi,
It appears the documentation for fast-import does not specify the
basis on which a commit command's file changes (filemodify,
filedelete, filecopy, or filerename) are relative to. For a non-merge
commit, it's obvious, and I thought that it would be obvious for a
merge commit too -- and then found out I had assumed the wrong answer.
I assumed the file changes would be relative to the *combined* set of
files from the parents, whereas fast-import apparently treats them as
relative to the first (or 'from') parent. (Since the combined set of
files may have conflicts, I'd expect it to be an error if the merge
commit didn't specify an appropriate filemodify command for at least
each of the filenames with conflicts.)
In case my description above isn't clear, I've got a simple example at
the end of this email that has a file 'world' on one branch, a file
'bar' on another branch, and a merge of the two branches. In the
merge commit, I do not need to mention the 'world' file; it will be
included automatically. However, unless I mention the 'bar' file (by
adding a 'M 100644 :1 bar' line to the end of the input), it will not
be included in the merge commit.
Is this intentional? I believe we could change this behavior without
breaking backward compatibility with older fast-export output streams,
since such older streams would simply be providing redundant
information. But is there a reason for this behavior that I'm
missing?
Thanks,
Elijah
Sample input file for git fast-import (which merges two commits but
silently drops one of the files):
blob
mark :1
data 4
foo
reset refs/heads/other
commit refs/heads/other
mark :2
author Elijah Newren <newren@gmail.com> 1234815015 -0700
committer Elijah Newren <newren@gmail.com> 1234815015 -0700
data 29
Initial commit, other branch
M 100644 :1 bar
blob
mark :3
data 3
hi
reset refs/heads/master
commit refs/heads/master
mark :4
author Elijah Newren <newren@gmail.com> 1234814943 -0700
committer Elijah Newren <newren@gmail.com> 1234814943 -0700
data 30
Initial commit, master branch
M 100644 :3 world
commit refs/heads/master
mark :5
author Elijah Newren <newren@gmail.com> 1234815029 -0700
committer Elijah Newren <newren@gmail.com> 1234815029 -0700
data 21
Merge branch 'other'
from :4
merge :2
next reply other threads:[~2009-02-17 0:30 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-17 0:28 Elijah Newren [this message]
2009-02-17 5:47 ` fast-import, merges, and file changes -- lack of clarity in docs, possible minor bug, or PEBKAC? Elijah Newren
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=51419b2c0902161628x7a3475e6p2a70310e5b294444@mail.gmail.com \
--to=newren@gmail.com \
--cc=git@vger.kernel.org \
--cc=spearce@spearce.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).