From: Elijah Newren <newren@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Subject: Bug report: git branch behaves as if --no-replace-objects is passed
Date: Mon, 29 Mar 2021 23:05:05 -0700 [thread overview]
Message-ID: <CABPp-BEAbN05+hCtK=xhGg5uZFqbUvH9hMcCNMcBWp5JWLqzPw@mail.gmail.com> (raw)
Hi,
Forwarding a report from
https://github.com/newren/git-filter-repo/issues/229, with a few more
details...
log, diff, etc. seem to all support replace objects nicely:
git init -b main whatever
cd whatever/
>empty
git add empty
git commit -m initial
git replace -f deadbeefdeadbeefdeadbeefdeadbeefdeadbeef $(git
rev-parse main)
echo stuff >>empty
Now, If I try to use this replace object:
$ git diff --stat deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
empty | 1 +
1 file changed, 1 insertion(+)
$ git log --oneline deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
deadbee (replaced) initial
it all works well. BUT, if I try to use it with branch it doesn't work:
$ git branch --contains deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
$
and possibly worse, if I create a new branch based on it and use it:
$ git branch foobar deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
$ git checkout foobar
$ echo stuff >empty
$ git add empty
$ git commit -m more
then it's clear that branch created foobar pointing to the replaced
object rather than the replacement object -- despite the fact that the
replaced object doesn't even exist within this repo:
$ git cat-file -p HEAD
tree 18108bae26dc91af2055bc66cc9fea278012dbd3
parent deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
author Elijah Newren <newren@gmail.com> 1617083739 -0700
committer Elijah Newren <newren@gmail.com> 1617083739 -0700
more
I poked around in the code a little but it is not at all clear to me
why some parts of the code (log, diff) translate replace refs
correctly, while others (branch) don't. It is clear from the output
that log is aware that the refs are replaced, which makes me wonder if
every caller needs to be aware of replace refs for them to work
correctly everywhere, because I couldn't find a missing environment
setup for "branch".
next reply other threads:[~2021-03-30 6:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-30 6:05 Elijah Newren [this message]
2021-03-30 7:02 ` Bug report: git branch behaves as if --no-replace-objects is passed Jeff King
2021-03-30 18:58 ` Junio C Hamano
2021-03-30 21:19 ` Elijah Newren
2021-03-30 21:30 ` Elijah Newren
2021-03-30 21:59 ` Junio C Hamano
2021-03-30 21:53 ` Junio C Hamano
2021-03-30 22:43 ` Elijah Newren
2021-03-30 23:04 ` Junio C Hamano
2021-03-31 0:32 ` 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
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='CABPp-BEAbN05+hCtK=xhGg5uZFqbUvH9hMcCNMcBWp5JWLqzPw@mail.gmail.com' \
--to=newren@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.
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).