threads / discuss / 20286

git-fast-import question

Subject: git-fast-import question

## tl;dr

3 messages between Jul 29, 2009 and Jul 30, 2009.

replies: 2people: 2as markdown or json

Troy Telford· Jul 29, 2009, 22:36 UTC · lore

I've been writing an importer from an older SCM into git. I'm getting the following behavior with using git-fast-import:

The file I'm importing has something along the lines of:

commit refs/heads/foo <various metadata> M 100644 :mark path/to/some/file

Then, later on, there's another commit:

commit refs/heads/foo <various metadata> R path/to/some/file new/path/to/some/file

As far as I've been able to see, the :from tag points to the correct commit (which is also in the correct branch). There are no instances of 'reset <branch>' being called anywhere. The file isn't deleted anywhere.

But when I run fast-import, I receive an error to the extent of: fatal: Path path/to/some/file not in branch

So to me, it looks like the file that I'm renaming should exist in the branch - it's not being renamed anywhere, not being deleted, and the branch isn't reset. Yet fast-import doesn't seem to think the file exists.

I'm using git 1.6.3.3
Shawn O. Pearce· Jul 29, 2009, 22:48 UTC · re: Troy Telford · lore

Re: git-fast-import question

Troy Telford <ttelford.groups@gmail.com> wrote:
Show 7 quoted lines
> But when I run fast-import, I receive an error to the extent of:
> fatal:  Path path/to/some/file not in branch
> 
> So to me, it looks like the file that I'm renaming should exist in the
> branch - it's not being renamed anywhere, not being deleted, and the
> branch isn't reset.  Yet fast-import doesn't seem to think the file
> exists.

Perhaps try inserting a checkpoint just before the rename commit, so you can actually look at the tree structure in the output branch when the crash occurs. My initial guess is, you don't have what you think you have.

-- 
Shawn.
Troy Telford· Jul 30, 2009, 00:00 UTC · re: Shawn O. Pearce · lore

Re: git-fast-import question

> My initial guess is, you don't have what
> you think you have.
Thanks for the tip - you're right in that I don't have what I think I have.

Namely, there are entire sections of the dump file that aren't getting imported. fast-import isn't complaining about it either.

commit refs/heads/foo <various metadata> M 100644 :mark path/to/some/file

Isn't getting imported (to any branch, let alone refs/heads/foo)
So when the later commit wants to rename the file, it can't be found.

Digging a bit deeper, I found a few cases where I'd have something along the lines of:

commit refs/heads/foo mark :1 <etc, etc.>

commit refs/heads/foo mark :2 from :1 <etc, etc>

ie. two sequential commits, to the same branch. The first commit is being imported; the second commit isn't being imported. Many subsequent commits are similarly cast aside - then for no reason I can tell, commits start getting imported again. I'd expect fast-import to complain, but that doesn't seem to be happening.

← back to recent threads