git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
* git-svn 1.5.3 does not understand grafts?
@ 2007-09-07 16:41 Joakim Tjernlund
  2007-09-07 16:52 ` Joakim Tjernlund
  0 siblings, 1 reply; 8+ messages in thread
From: Joakim Tjernlund @ 2007-09-07 16:41 UTC (permalink / raw)
  To: git

svnadmin create /usr/local/src/TM/svn-tst/7720-svn/
svn mkdir  file:///usr/local/src/TM/svn-tst/7720-svn/trunk -m "Add trunk dir"
svn mkdir  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp -m "Add swp dir"

In my git repo I do
git-svn init  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
git-svn fetch
git branch svn remotes/git-svn
#make remotes/git-svn parent to the initial commit in my git tree
graftid=`git-show-ref -s svn`
echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > .git/info/grafts
#da783... is the initial commit in my git tree.
git-svn dcommit

fails with:
Committing to file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp ...
Commit da783cce390ce013b19f1d308ea6813269c6a6b5
has no parent commit, and therefore nothing to diff against.
You should be working from a repository originally created by git-svn


 Jocke

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: git-svn 1.5.3 does not understand grafts?
  2007-09-07 16:41 git-svn 1.5.3 does not understand grafts? Joakim Tjernlund
@ 2007-09-07 16:52 ` Joakim Tjernlund
  2007-09-07 20:23   ` Joakim Tjernlund
  0 siblings, 1 reply; 8+ messages in thread
From: Joakim Tjernlund @ 2007-09-07 16:52 UTC (permalink / raw)
  To: git

On Fri, 2007-09-07 at 18:41 +0200, Joakim Tjernlund wrote:
> svnadmin create /usr/local/src/TM/svn-tst/7720-svn/
> svn mkdir  file:///usr/local/src/TM/svn-tst/7720-svn/trunk -m "Add trunk dir"
> svn mkdir  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp -m "Add swp dir"
> 
> In my git repo I do
> git-svn init  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
> git-svn fetch
> git branch svn remotes/git-svn
> #make remotes/git-svn parent to the initial commit in my git tree
> graftid=`git-show-ref -s svn`
> echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > .git/info/grafts
> #da783... is the initial commit in my git tree.
> git-svn dcommit
> 
> fails with:
> Committing to file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp ...
> Commit da783cce390ce013b19f1d308ea6813269c6a6b5
> has no parent commit, and therefore nothing to diff against.
> You should be working from a repository originally created by git-svn
> 
> 
>  Jocke

Using filter-branch helps, but git-svn isn't too happy:

git-svn init  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
git-svn fetch
git branch svn remotes/git-svn
#make remotes/git-svn parent to the initial commit in my git tree
graftid=`git-show-ref -s svn`
echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > .git/info/grafts
#da783... is the initial commit in my git tree.
git filter-branch $graftid..HEAD
git-svn dcommit

Now I get alot of complaints, but it commits to svn.
It takes forever though:
r3 = 55a489bd4f66dd1f641a4676359d7b8911dc7d83 (git-svn)
W: HEAD and refs/remotes/git-svn differ, using rebase:
:100644 100644 f85ae11af7715a224015582724cb2bab87ec914a
7dc27f2dc58f6dd46cff79d5d762e630febfd419 M    Makefile :100644 100644
4fa08aee7d4cd193cb161115cc079e7c50326e23
0246a89da64f08b0b48f7aa16886bbb2b12df237 M   adc.c :100644 100644
84eba702cce3a9e4f125162f77f3ea52ae45aebc
78347f1f40f7526142bcc5db0708f50dd6150c0a M      adc.h :100644 100644
890dfe7abdac0aa03eeca24572d98e3953db69d7
c2367a52e99af1f036dfc1de442f08cb187a58ab M   bmi.c :100644 100644
92ae3ce7c8c0b3a664dc4ace8ce29b9ac7fd2d9b
40fb9b886e3a51189e662d54cbdbb968e244aa53 M       bmi.h :100644 100644
a21005f15af34cd17e6acd8f1de974e3d82af0f4
ba2c2c4b19bbbfdabae6d3a9980132c4e1e1c07c M      cdrbug.c :100644 100644
5a299761b62ca83fc22d30086b9a082c4de23ee4
3f885b0d8b7c29e7970997ed608df12e23d78644 M   config.c :100644 100644
8a0a8ed90e50d18a9865fa2f5e644ca083a8b783
a2153ef48a59ffdf5a84ca6b93106c98dcb27a9c M control.c :100644 100644
760b828d8e55f6314d313e176578546e3d76b22b
143b44923e1f40d89fa9e87a30dd63abc48cea57 M  database.c :100644 100644
e7cab9865317c1ab4cbe8ecb47b5fda7c0eddcd8
ff519b51ae5428b93504f124ea1f24452b69fa94 M database.h :100644 100644
a28219bc7b5bc692242639fae0e5b54cfaec7bc3
78c8df626c1cf9c989f127f96161850f92cd4588 M defines.h :100644 100644
21e68f9a09a2618493eed4f4c1796293db78c828
68659b3a1bc25a90b103824e089c7c6126f5367b M        eeprom.c :100644
100644 3095638b3f28d5b8e04be1c660fc37bf82e034c2
7ea0835e82aa230f1834b9977ec6a634c400e244 M   eeprom.h :100644 000000
8f7368e29d7ba3dbe34c8e6ad7a3738b68dd1d78
0000000000000000000000000000000000000000 D   fpga.c :100644 000000
2dded257891ada8228f684e9be213b86b6c1fda5
0000000000000000000000000000000000000000 D   fpga.h :100644 100644
97ccea82dd35a7d5973199511d7a9127981f74d3
3758a9334cf04bb670ae2563ad5f2b95af257f3b M     fwrev.h :100644 100644
cd80946581062ead075ba6047d51ae2605e4cc14
2ef670ea229b62bc1b10d087ab2bd3850f08e91a M    glitch.c :100644 100644
d14716ec4351b610dbac81637623a9ca3a8e8902
9e1789933635a5b9e2c562a3c69a973e07b31b7b M   i2cmux.c :100644 100644
6551153cf879ba87d73aa53aa6b768867b026842
4a2813b41231461ab4b316829f9e59ac36498813 M i2cmux.h :100644 100644
2967bc6e21ab9581a47266966867ded04d8076f1
5294b80cbad8d7501fa8c415a0b7b0e1a3343262 M   led.c :100644 100644
9b8016b9c3f13a5fb4446a1f31d1d2311ece32df
2014113eaff9c22f4efd347031d3b7651aa78648 M      led.h :100644 100644
e4d50a5a735105187304f0458cde9102c64aa163
faba2f86b6f86f944ce4995ec5cab2edea0d3bb6 M   lvd.c :100644 100644
aa86ba2a2c313ca688700e75a4353a4d66846b54
bbc2a887b404a06d28ee77c5343278f3a309371f M       main.c :100644 100644
d0f5f5f6538924cfe757e8cdb328f4d7bf9858bd
25e10d528df873425cf32b366c42c01a84367459 M     memmap.c :100644 100644
9bdc8d928ce77ed2f529a0709a3f54a882c37b8b
086b7fc9dd915e43f21e94e963a18184669d361d M   optosfp.c :000000 100644
0000000000000000000000000000000000000000
bb8184467f03194f7aa8cc964a5dfe37603539e3 A        pld.c :000000 100644
0000000000000000000000000000000000000000
405486a29ca8be8212bc307017404ebbed904fe0 A      pld.h :100644 100644
b361784c0b617bdceac5e297e0c3dbb96b2a3dae
869bf82b2e8b710150abf88ca34a9e12378f1415 M      protocol.c :100644
100644 988233f538e9df6c681b2f60a19279567ca2536d
55d9627846575f5f63d907a6dd07979040c64552 M       protocol.h :100644
100644 b43a0c32977e11ad6ccbe9704ce8fdace8914e4d
7872778d025990cdc014d6ca907a3cf9e75050b1 M shell.c :100644 100644
0134ff4ca1a1f8b8d760eb4e367057dbb88b68ed
cda0e129d5fc1390dd7d1e1dd5b9695651c5dcdd M    spi.c :100644 100644
3ea874f32fa1eab87f4d2261a922dc293f379947
24e1be7f8bfe9570464260b6d210cbf7771edaab M      task.c :100644 100644
ca1f966200e5f7126fe0b61a768a5e4b1d49bc94
87a516572095292add8b1b19687a624c38ad205f M   trans.c :100644 100644
b298cc58873100e5e74f53d2a3f62028caba8951
853c18b6c42f9d463f14eede3b84ed700b00dcd5 M    transceiver.cFirst,
rewinding head to replay your work on top of it...
HEAD is now at 55a489b... Initial import of 7700, sws100034.

I get alot similar messages until it is finished.

    Jocke 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: git-svn 1.5.3 does not understand grafts?
  2007-09-07 16:52 ` Joakim Tjernlund
@ 2007-09-07 20:23   ` Joakim Tjernlund
  2007-09-08  5:01     ` Eric Wong
  0 siblings, 1 reply; 8+ messages in thread
From: Joakim Tjernlund @ 2007-09-07 20:23 UTC (permalink / raw)
  To: git; +Cc: Eric Wong

On Fri, 2007-09-07 at 18:52 +0200, Joakim Tjernlund wrote:
> On Fri, 2007-09-07 at 18:41 +0200, Joakim Tjernlund wrote:
> > svnadmin create /usr/local/src/TM/svn-tst/7720-svn/
> > svn mkdir  file:///usr/local/src/TM/svn-tst/7720-svn/trunk -m "Add trunk dir"
> > svn mkdir  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp -m "Add swp dir"
> > 
> > In my git repo I do
> > git-svn init  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
> > git-svn fetch
> > git branch svn remotes/git-svn
> > #make remotes/git-svn parent to the initial commit in my git tree
> > graftid=`git-show-ref -s svn`
> > echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > .git/info/grafts
> > #da783... is the initial commit in my git tree.
> > git-svn dcommit
> > 
> > fails with:
> > Committing to file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp ...
> > Commit da783cce390ce013b19f1d308ea6813269c6a6b5
> > has no parent commit, and therefore nothing to diff against.
> > You should be working from a repository originally created by git-svn
> > 
> > 
> >  Jocke
> 
> Using filter-branch helps, but git-svn isn't too happy:
> 
> git-svn init  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
> git-svn fetch
> git branch svn remotes/git-svn
> #make remotes/git-svn parent to the initial commit in my git tree
> graftid=`git-show-ref -s svn`
> echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > .git/info/grafts
> #da783... is the initial commit in my git tree.
> git filter-branch $graftid..HEAD
> git-svn dcommit
> 
> Now I get alot of complaints, but it commits to svn.
> It takes forever though:
> r3 = 55a489bd4f66dd1f641a4676359d7b8911dc7d83 (git-svn)
> W: HEAD and refs/remotes/git-svn differ, using rebase:
> :100644 100644 f85ae11af7715a224015582724cb2bab87ec914a
[SNIP]

Just wanted to add that 1.5.2.2 works with grafts and 
that I suspect sub read_commit_parents in git-svn, but as I don't
do perl I am stuck.

     Jocke
Oh, Eric W. CC:ed as well this time

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: git-svn 1.5.3 does not understand grafts?
  2007-09-07 20:23   ` Joakim Tjernlund
@ 2007-09-08  5:01     ` Eric Wong
  2007-09-08 11:04       ` Joakim Tjernlund
  2007-09-08 17:43       ` Joakim Tjernlund
  0 siblings, 2 replies; 8+ messages in thread
From: Eric Wong @ 2007-09-08  5:01 UTC (permalink / raw)
  To: Joakim Tjernlund; +Cc: git

Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:
> On Fri, 2007-09-07 at 18:52 +0200, Joakim Tjernlund wrote:
> > On Fri, 2007-09-07 at 18:41 +0200, Joakim Tjernlund wrote:
> > > svnadmin create /usr/local/src/TM/svn-tst/7720-svn/
> > > svn mkdir  file:///usr/local/src/TM/svn-tst/7720-svn/trunk -m "Add trunk dir"
> > > svn mkdir  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp -m "Add swp dir"
> > > 
> > > In my git repo I do
> > > git-svn init  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
> > > git-svn fetch
> > > git branch svn remotes/git-svn
> > > #make remotes/git-svn parent to the initial commit in my git tree
> > > graftid=`git-show-ref -s svn`
> > > echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > .git/info/grafts
> > > #da783... is the initial commit in my git tree.
> > > git-svn dcommit
> > > 
> > > fails with:
> > > Committing to file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp ...
> > > Commit da783cce390ce013b19f1d308ea6813269c6a6b5
> > > has no parent commit, and therefore nothing to diff against.
> > > You should be working from a repository originally created by git-svn
> > 
> > Using filter-branch helps, but git-svn isn't too happy:
> > 
> > git-svn init  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
> > git-svn fetch
> > git branch svn remotes/git-svn
> > #make remotes/git-svn parent to the initial commit in my git tree
> > graftid=`git-show-ref -s svn`
> > echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > .git/info/grafts
> > #da783... is the initial commit in my git tree.
> > git filter-branch $graftid..HEAD
> > git-svn dcommit
> > 
> > Now I get alot of complaints, but it commits to svn.
> > It takes forever though:
> > r3 = 55a489bd4f66dd1f641a4676359d7b8911dc7d83 (git-svn)
> > W: HEAD and refs/remotes/git-svn differ, using rebase:
> > :100644 100644 f85ae11af7715a224015582724cb2bab87ec914a

I haven't used filter-branch myself, but you probably need to remove all
.rev_db* files in $GIT_DIR after running it (git-svn can recreate them
unless you use the svmRevProps or noMetadata options.

> [SNIP]
> 
> Just wanted to add that 1.5.2.2 works with grafts and 
> that I suspect sub read_commit_parents in git-svn, but as I don't
> do perl I am stuck.

Crap, it looks like I completely forgot about the existence
of grafts while doing this function.

>      Jocke
> Oh, Eric W. CC:ed as well this time

Thanks.

-- 
Eric Wong

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: git-svn 1.5.3 does not understand grafts?
  2007-09-08  5:01     ` Eric Wong
@ 2007-09-08 11:04       ` Joakim Tjernlund
  2007-09-08 17:43       ` Joakim Tjernlund
  1 sibling, 0 replies; 8+ messages in thread
From: Joakim Tjernlund @ 2007-09-08 11:04 UTC (permalink / raw)
  To: 'Eric Wong'; +Cc: 'git'

> -----Original Message-----
> From: Eric Wong [mailto:normalperson@yhbt.net] 
> Sent: den 8 september 2007 07:02
> To: Joakim Tjernlund
> Cc: git
> Subject: Re: git-svn 1.5.3 does not understand grafts?
> 
> Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:
> > On Fri, 2007-09-07 at 18:52 +0200, Joakim Tjernlund wrote:
> > > On Fri, 2007-09-07 at 18:41 +0200, Joakim Tjernlund wrote:
> > > > svnadmin create /usr/local/src/TM/svn-tst/7720-svn/
> > > > svn mkdir  
> file:///usr/local/src/TM/svn-tst/7720-svn/trunk -m "Add trunk dir"
> > > > svn mkdir  
> file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp -m "Add swp dir"
> > > > 
> > > > In my git repo I do
> > > > git-svn init  
> file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
> > > > git-svn fetch
> > > > git branch svn remotes/git-svn
> > > > #make remotes/git-svn parent to the initial commit in 
> my git tree
> > > > graftid=`git-show-ref -s svn`
> > > > echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid 
> > .git/info/grafts
> > > > #da783... is the initial commit in my git tree.
> > > > git-svn dcommit
> > > > 
> > > > fails with:
> > > > Committing to 
> file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp ...
> > > > Commit da783cce390ce013b19f1d308ea6813269c6a6b5
> > > > has no parent commit, and therefore nothing to diff against.
> > > > You should be working from a repository originally 
> created by git-svn
> > > 
> > > Using filter-branch helps, but git-svn isn't too happy:
> > > 
> > > git-svn init  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
> > > git-svn fetch
> > > git branch svn remotes/git-svn
> > > #make remotes/git-svn parent to the initial commit in my git tree
> > > graftid=`git-show-ref -s svn`
> > > echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > 
> .git/info/grafts
> > > #da783... is the initial commit in my git tree.
> > > git filter-branch $graftid..HEAD
> > > git-svn dcommit
> > > 
> > > Now I get alot of complaints, but it commits to svn.
> > > It takes forever though:
> > > r3 = 55a489bd4f66dd1f641a4676359d7b8911dc7d83 (git-svn)
> > > W: HEAD and refs/remotes/git-svn differ, using rebase:
> > > :100644 100644 f85ae11af7715a224015582724cb2bab87ec914a
> 
> I haven't used filter-branch myself, but you probably need to 
> remove all
> .rev_db* files in $GIT_DIR after running it (git-svn can recreate them
> unless you use the svmRevProps or noMetadata options.

havn't used it either, but I wanted to see if it makes a difference.
I will remember to remove the .rev_db* files next time I try.

filter branch is overkill if the grafts file works as git-svn will rewrite
the commits so once the first dcommit has been made, I can remove the
grafts file.

I do have another project though were I want to fix som odd parenting caused
by set-tree, there I will have to used filter-branch to make it permanet.

> 
> > [SNIP]
> > 
> > Just wanted to add that 1.5.2.2 works with grafts and 
> > that I suspect sub read_commit_parents in git-svn, but as I don't
> > do perl I am stuck.
> 
> Crap, it looks like I completely forgot about the existence
> of grafts while doing this function.

:)
Do you have to worry about grafts in git-svn? 
Can't git plumbing do this for you?

> 
> >      Jocke
> > Oh, Eric W. CC:ed as well this time
> 
> Thanks.
> 
> -- 
> Eric Wong
> 
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: git-svn 1.5.3 does not understand grafts?
  2007-09-08  5:01     ` Eric Wong
  2007-09-08 11:04       ` Joakim Tjernlund
@ 2007-09-08 17:43       ` Joakim Tjernlund
  2007-09-08 19:53         ` Junio C Hamano
  1 sibling, 1 reply; 8+ messages in thread
From: Joakim Tjernlund @ 2007-09-08 17:43 UTC (permalink / raw)
  To: 'Eric Wong'; +Cc: 'git'

 

> -----Original Message-----
> From: Eric Wong [mailto:normalperson@yhbt.net] 
> Sent: den 8 september 2007 07:02
> To: Joakim Tjernlund
> Cc: git
> Subject: Re: git-svn 1.5.3 does not understand grafts?
> 
> Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:
> > On Fri, 2007-09-07 at 18:52 +0200, Joakim Tjernlund wrote:
> > > On Fri, 2007-09-07 at 18:41 +0200, Joakim Tjernlund wrote:
> > > > svnadmin create /usr/local/src/TM/svn-tst/7720-svn/
> > > > svn mkdir  
> file:///usr/local/src/TM/svn-tst/7720-svn/trunk -m "Add trunk dir"
> > > > svn mkdir  
> file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp -m "Add swp dir"
> > > > 
> > > > In my git repo I do
> > > > git-svn init  
> file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
> > > > git-svn fetch
> > > > git branch svn remotes/git-svn
> > > > #make remotes/git-svn parent to the initial commit in 
> my git tree
> > > > graftid=`git-show-ref -s svn`
> > > > echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid 
> > .git/info/grafts
> > > > #da783... is the initial commit in my git tree.
> > > > git-svn dcommit
> > > > 
> > > > fails with:
> > > > Committing to 
> file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp ...
> > > > Commit da783cce390ce013b19f1d308ea6813269c6a6b5
> > > > has no parent commit, and therefore nothing to diff against.
> > > > You should be working from a repository originally 
> created by git-svn
> > > 
> > > Using filter-branch helps, but git-svn isn't too happy:
> > > 
> > > git-svn init  file:///usr/local/src/TM/svn-tst/7720-svn/trunk/swp 
> > > git-svn fetch
> > > git branch svn remotes/git-svn
> > > #make remotes/git-svn parent to the initial commit in my git tree
> > > graftid=`git-show-ref -s svn`
> > > echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > 
> .git/info/grafts
> > > #da783... is the initial commit in my git tree.
> > > git filter-branch $graftid..HEAD
> > > git-svn dcommit
> > > 
> > > Now I get alot of complaints, but it commits to svn.
> > > It takes forever though:
> > > r3 = 55a489bd4f66dd1f641a4676359d7b8911dc7d83 (git-svn)
> > > W: HEAD and refs/remotes/git-svn differ, using rebase:
> > > :100644 100644 f85ae11af7715a224015582724cb2bab87ec914a
> 
> I haven't used filter-branch myself, but you probably need to 
> remove all
> .rev_db* files in $GIT_DIR after running it (git-svn can recreate them
> unless you use the svmRevProps or noMetadata options.
> 
> > [SNIP]
> > 
> > Just wanted to add that 1.5.2.2 works with grafts and 
> > that I suspect sub read_commit_parents in git-svn, but as I don't
> > do perl I am stuck.
> 
> Crap, it looks like I completely forgot about the existence
> of grafts while doing this function.

hmm, I think git-cat-file is to blame.
git-cat-file commit da783cce390ce013b19f1d308ea6813269c6a6b5 does
not list list any parent even though I did
graftid=`git-show-ref -s remotes/git-svn`
echo da783cce390ce013b19f1d308ea6813269c6a6b5 $graftid > .git/info/grafts

 Jocke

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: git-svn 1.5.3 does not understand grafts?
  2007-09-08 17:43       ` Joakim Tjernlund
@ 2007-09-08 19:53         ` Junio C Hamano
  2007-09-08 23:33           ` [PATCH] git-svn: understand grafts when doing dcommit Eric Wong
  0 siblings, 1 reply; 8+ messages in thread
From: Junio C Hamano @ 2007-09-08 19:53 UTC (permalink / raw)
  To: Joakim Tjernlund; +Cc: 'Eric Wong', 'git'

"Joakim Tjernlund" <joakim.tjernlund@transmode.se> writes:

> hmm, I think git-cat-file is to blame.
> git-cat-file commit da783cce390ce013b19f1d308ea6813269c6a6b5 does
> not list list any parent...

The plumbing cat-file does not deal with grafts and this is
deliberate.  Otherwise you would not be able to find the true
set of parents when you'd want to.

So do not blame cat-file, but blame the Porcelain that uses
cat-file to read a commit object, without annotating what it
read with what is in grafts, in this case your command line
experiment ;-).

The log family of commands and rev-list plumbing while
traversing commit ancestry chain do take grafts into account.

One caveat is pretty=raw output format shows true parents
without grafts on "parent " header line, while the "commit "
fake header prepended in the output for each commit shows the
parents that takes into account.

To illustrate, if you forge the history and say the parent of
1ddea77 is 5da1606 (when the true parent is 820eca68) with
grafts mechanism, here is what happens:

    $ echo '1ddea77e449ef28d8a7c74521af21121ab01abc0 5da1606d0bf5b970fadfa0ca91618a1e871f6755' >.git/info/grafts
    $ git show -s --pretty=raw --parents 1ddea77
    commit 1ddea77e449ef28d8a7c74521af21121ab01abc0 5da1606d0bf5b970fadfa0ca91618a1e871f6755
    tree e9e61bc801438062978ff47b0963c536ed1e51a9
    parent 820eca68c2577d7499d203d7f4f7ae479b577683
    author Nick Hengeveld <nickh@reactrix.com> 1127757131 -0700
    committer Junio C Hamano <junkio@cox.net> 1127805558 -0700

        [PATCH] Return CURL error message when object transfer fails

        Return CURL error message when object transfer fails
        ...
    $ git-cat-file commit 1ddea77
    tree e9e61bc801438062978ff47b0963c536ed1e51a9
    parent 820eca68c2577d7499d203d7f4f7ae479b577683
    author Nick Hengeveld <nickh@reactrix.com> 1127757131 -0700
    committer Junio C Hamano <junkio@cox.net> 1127805558 -0700

    [PATCH] Return CURL error message when object transfer fails

    Return CURL error message when object transfer fails
    ...

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] git-svn: understand grafts when doing dcommit
  2007-09-08 19:53         ` Junio C Hamano
@ 2007-09-08 23:33           ` Eric Wong
  0 siblings, 0 replies; 8+ messages in thread
From: Eric Wong @ 2007-09-08 23:33 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Joakim Tjernlund, git

Use the rev-list --parents functionality to read the parents
of the commit.  cat-file only shows the raw object with the
original parents and doesn't take into account grafts; so
we'll rely on rev-list machinery for the smarts here.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
  Junio C Hamano <gitster@pobox.com> wrote:
  > "Joakim Tjernlund" <joakim.tjernlund@transmode.se> writes:
  > 
  > > hmm, I think git-cat-file is to blame.
  > > git-cat-file commit da783cce390ce013b19f1d308ea6813269c6a6b5 does
  > > not list list any parent...
  > 
  > The plumbing cat-file does not deal with grafts and this is
  > deliberate.  Otherwise you would not be able to find the true
  > set of parents when you'd want to.
  > 
  > So do not blame cat-file, but blame the Porcelain that uses
  > cat-file to read a commit object, without annotating what it
  > read with what is in grafts, in this case your command line
  > experiment ;-).
  > 
  > The log family of commands and rev-list plumbing while
  > traversing commit ancestry chain do take grafts into account.
  > 
  > One caveat is pretty=raw output format shows true parents
  > without grafts on "parent " header line, while the "commit "
  > fake header prepended in the output for each commit shows the
  > parents that takes into account.
  > 
  > To illustrate, if you forge the history and say the parent of
  > 1ddea77 is 5da1606 (when the true parent is 820eca68) with
  > grafts mechanism, here is what happens:
  > 
  >     $ echo '1ddea77e449ef28d8a7c74521af21121ab01abc0 5da1606d0bf5b970fadfa0ca91618a1e871f6755' >.git/info/grafts
  >     $ git show -s --pretty=raw --parents 1ddea77
  >     commit 1ddea77e449ef28d8a7c74521af21121ab01abc0 5da1606d0bf5b970fadfa0ca91618a1e871f6755
  >     tree e9e61bc801438062978ff47b0963c536ed1e51a9
  >     parent 820eca68c2577d7499d203d7f4f7ae479b577683
  >     author Nick Hengeveld <nickh@reactrix.com> 1127757131 -0700
  >     committer Junio C Hamano <junkio@cox.net> 1127805558 -0700
  > 
  >         [PATCH] Return CURL error message when object transfer fails
  > 
  >         Return CURL error message when object transfer fails
  >         ...

  Interesting.  I didn't know about the --parents option before.

 git-svn.perl |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index fbd4691..f818160 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -841,14 +841,9 @@ sub working_head_info {
 
 sub read_commit_parents {
 	my ($parents, $c) = @_;
-	my ($fh, $ctx) = command_output_pipe(qw/cat-file commit/, $c);
-	while (<$fh>) {
-		chomp;
-		last if '';
-		/^parent ($sha1)/ or next;
-		push @{$parents->{$c}}, $1;
-	}
-	close $fh; # break the pipe
+	chomp(my $p = command_oneline(qw/rev-list --parents -1/, $c));
+	$p =~ s/^($c)\s*// or die "rev-list --parents -1 $c failed!\n";
+	@{$parents->{$c}} = split(/ /, $p);
 }
 
 sub linearize_history {
-- 
Eric Wong

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2007-09-09  8:44 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-09-07 16:41 git-svn 1.5.3 does not understand grafts? Joakim Tjernlund
2007-09-07 16:52 ` Joakim Tjernlund
2007-09-07 20:23   ` Joakim Tjernlund
2007-09-08  5:01     ` Eric Wong
2007-09-08 11:04       ` Joakim Tjernlund
2007-09-08 17:43       ` Joakim Tjernlund
2007-09-08 19:53         ` Junio C Hamano
2007-09-08 23:33           ` [PATCH] git-svn: understand grafts when doing dcommit Eric Wong

Code repositories for project(s) associated with this 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).