chiark / gitweb /
tg import: fix + make more robust
authorKirill Smelkov <kirr@landau.phys.spbu.ru>
Thu, 18 Sep 2008 16:29:30 +0000 (20:29 +0400)
committerPetr Baudis <pasky@suse.cz>
Mon, 22 Sep 2008 15:40:35 +0000 (17:40 +0200)
commit057218422892984e6d2eecff3a7605040b65fdf2
treeebcc948d3cc0c73a65977245e4fdcb7f613549c7
parent0afdf90c385a5bc7948fea9f1ac119b6259e55c1
tg import: fix + make more robust

a5bf892d0900cbf9949f628c3e05db599341a02c (tg import: Check out new files
as we go) broke tg-import. This is how it fails after that change:

    $ tg import Z~~..Z
    tg: ---- Importing e3e8c1382fe4cedca31e955910914ae0033455eb to t/Z
    tg: Automatically marking dependency on master
    tg: Creating t/Z base from master...
    Switched to a new branch "t/Z"
    tg: Topic branch t/Z set up. Please fill .topmsg now and make initial commit.
    tg: To abort: git rm -f .top* && git checkout master && tg delete t/Z
    fatal: pathspec '.topdeps' did not match any files

That's why, when we do git read-tree -u -m it _kills_ .topmsg and
.topdep both in index and in working tree!

Also, imagine that we are going to import patch C onto A

o---B---A
     \
      C

With read-tree we'll *override* any change in common files between A and
B, so I think read-tree is wrong here (it was ok if we are importing
on top of B).

What is right it seems, is to work on diff level -- to use cherry-pick.
And since cherry-pick does not kill our already-in-index .topmsg and
.topdeps we automatically fix the breakage.

Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru>
tg-import.sh