* Removal of "--merge-order"?
@ 2006-02-24 16:32 Linus Torvalds
2006-02-24 16:53 ` Randy.Dunlap
2006-02-24 19:25 ` Junio C Hamano
0 siblings, 2 replies; 9+ messages in thread
From: Linus Torvalds @ 2006-02-24 16:32 UTC (permalink / raw)
To: Junio C Hamano, Git Mailing List
I just tested it again, and
git-rev-list --merge-order HEAD
takes an inordinate amount of time:
real 5m1.139s
user 4m59.504s
sys 0m1.220s
and that's on a reasonably fast machine (not my fastest, but no slouch by
any measure - my fastest machine I'm not allowed to really benchmark
publicly ;)
It may be a cool algorithm, but it's essentially useless on any bigger
tree. And nobody uses it, since "--topo-order" gives the guarantees that
people really care about, and finishes in 0.537 seconds on the same
machine with the same tree.
It also depends on the openssh "bignum" stuff, which means that any
machine where we just rely on our own SHA1 implementation and don't use
openssh doesn't have the flag anyway.
In other words, I'd really prefer if it was gone. Some of the things I
might do to git-rev-list would be much simpler if I didn't have to worry
about merge-order, and the way it interfaces with the rest of
git-rev-list.
Comments?
Linus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Removal of "--merge-order"?
2006-02-24 16:32 Removal of "--merge-order"? Linus Torvalds
@ 2006-02-24 16:53 ` Randy.Dunlap
2006-02-24 17:23 ` Linus Torvalds
2006-02-24 19:25 ` Junio C Hamano
1 sibling, 1 reply; 9+ messages in thread
From: Randy.Dunlap @ 2006-02-24 16:53 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Junio C Hamano, Git Mailing List
On Fri, 24 Feb 2006, Linus Torvalds wrote:
>
> I just tested it again, and
>
> git-rev-list --merge-order HEAD
>
> takes an inordinate amount of time:
>
> real 5m1.139s
> user 4m59.504s
> sys 0m1.220s
That's too bad.
> and that's on a reasonably fast machine (not my fastest, but no slouch by
> any measure - my fastest machine I'm not allowed to really benchmark
> publicly ;)
>
> It may be a cool algorithm, but it's essentially useless on any bigger
> tree. And nobody uses it, since "--topo-order" gives the guarantees that
> people really care about, and finishes in 0.537 seconds on the same
> machine with the same tree.
>
> It also depends on the openssh "bignum" stuff, which means that any
> machine where we just rely on our own SHA1 implementation and don't use
> openssh doesn't have the flag anyway.
>
> In other words, I'd really prefer if it was gone. Some of the things I
> might do to git-rev-list would be much simpler if I didn't have to worry
> about merge-order, and the way it interfaces with the rest of
> git-rev-list.
>
> Comments?
I'm just a lowly user, but I see people trying to export git
trees to other SCMs, and they seem to prefer merge-order.
This is your chance to correct me about:
(a) how I am wrong; (b) how they are wrong. 8;)
I've heard/seen you say that merge-order is not interesting,
but I still believe that *your* merge order of the Linux kernel
tree is almost all that people really care about.
Apparently I needed to go to LCA to hear you discuss git.
--
~Randy
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Removal of "--merge-order"?
2006-02-24 16:53 ` Randy.Dunlap
@ 2006-02-24 17:23 ` Linus Torvalds
2006-02-24 17:32 ` Ryan Anderson
2006-02-24 17:47 ` Randy.Dunlap
0 siblings, 2 replies; 9+ messages in thread
From: Linus Torvalds @ 2006-02-24 17:23 UTC (permalink / raw)
To: Randy.Dunlap; +Cc: Junio C Hamano, Git Mailing List
On Fri, 24 Feb 2006, Randy.Dunlap wrote:
>
> I'm just a lowly user, but I see people trying to export git
> trees to other SCMs, and they seem to prefer merge-order.
> This is your chance to correct me about:
> (a) how I am wrong; (b) how they are wrong. 8;)
Well, I didn't even realize anybody at all was using it. I've never seen
any mention of it, and considering how ungodly slow it is, I would have
expected somebody to pipe up about it..
I did a google search for "git" and "merge-order", and the only actual use
(as opposed to mention in a man-page) I found in the 20 hits google showed
was an old version of gitk.
> I've heard/seen you say that merge-order is not interesting,
> but I still believe that *your* merge order of the Linux kernel
> tree is almost all that people really care about.
Could you actually point to somebody using it? They're hiding it well.
> Apparently I needed to go to LCA to hear you discuss git.
I certainly never delved into any of that..
Linus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Removal of "--merge-order"?
2006-02-24 17:23 ` Linus Torvalds
@ 2006-02-24 17:32 ` Ryan Anderson
2006-02-24 17:47 ` Randy.Dunlap
1 sibling, 0 replies; 9+ messages in thread
From: Ryan Anderson @ 2006-02-24 17:32 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Randy.Dunlap, Junio C Hamano, Git Mailing List
On Fri, Feb 24, 2006 at 09:23:24AM -0800, Linus Torvalds wrote:
> On Fri, 24 Feb 2006, Randy.Dunlap wrote:
> >
> > I'm just a lowly user, but I see people trying to export git
> > trees to other SCMs, and they seem to prefer merge-order.
> > This is your chance to correct me about:
> > (a) how I am wrong; (b) how they are wrong. 8;)
>
> Well, I didn't even realize anybody at all was using it. I've never seen
> any mention of it, and considering how ungodly slow it is, I would have
> expected somebody to pipe up about it..
>
> I did a google search for "git" and "merge-order", and the only actual use
> (as opposed to mention in a man-page) I found in the 20 hits google showed
> was an old version of gitk.
http://www.gelato.unsw.edu.au/archives/git/0511/12965.html
But topo-order would probably work as well, the default ordering just
didn't work correctly in my tests.
Certainly not a case that votes *against* removal, just noting an actual
user at one point.
--
Ryan Anderson
sometimes Pug Majere
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Removal of "--merge-order"?
2006-02-24 17:23 ` Linus Torvalds
2006-02-24 17:32 ` Ryan Anderson
@ 2006-02-24 17:47 ` Randy.Dunlap
2006-02-24 18:07 ` Linus Torvalds
1 sibling, 1 reply; 9+ messages in thread
From: Randy.Dunlap @ 2006-02-24 17:47 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Randy.Dunlap, Junio C Hamano, Git Mailing List
On Fri, 24 Feb 2006, Linus Torvalds wrote:
>
>
> On Fri, 24 Feb 2006, Randy.Dunlap wrote:
> >
> > I'm just a lowly user, but I see people trying to export git
> > trees to other SCMs, and they seem to prefer merge-order.
> > This is your chance to correct me about:
> > (a) how I am wrong; (b) how they are wrong. 8;)
>
> Well, I didn't even realize anybody at all was using it. I've never seen
> any mention of it, and considering how ungodly slow it is, I would have
> expected somebody to pipe up about it..
>
> I did a google search for "git" and "merge-order", and the only actual use
> (as opposed to mention in a man-page) I found in the 20 hits google showed
> was an old version of gitk.
>
> > I've heard/seen you say that merge-order is not interesting,
> > but I still believe that *your* merge order of the Linux kernel
> > tree is almost all that people really care about.
>
> Could you actually point to somebody using it? They're hiding it well.
Other than Ryan's reply, I found 2 users in a quick search,
but they have already stated that they are willing to change, so I
don't see objections unless someone else comes forward.
(Martin Langhoff, archimport)
http://marc.theaimsgroup.com/?l=git&m=112682069025547&w=2
Jon Seymour:
http://marc.theaimsgroup.com/?l=git&m=112998877717814&w=2
> > Apparently I needed to go to LCA to hear you discuss git.
>
> I certainly never delved into any of that..
Darn.
--
~Randy
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Removal of "--merge-order"?
2006-02-24 17:47 ` Randy.Dunlap
@ 2006-02-24 18:07 ` Linus Torvalds
2006-02-24 18:10 ` Randy.Dunlap
2006-02-24 21:37 ` Johannes Schindelin
0 siblings, 2 replies; 9+ messages in thread
From: Linus Torvalds @ 2006-02-24 18:07 UTC (permalink / raw)
To: Randy.Dunlap; +Cc: Junio C Hamano, Git Mailing List
On Fri, 24 Feb 2006, Randy.Dunlap wrote:
>
> Other than Ryan's reply, I found 2 users in a quick search,
> but they have already stated that they are willing to change, so I
> don't see objections unless someone else comes forward.
One thing we could do - and might be simpler - is to make the merge-order
thing be a post-processing phase of git-rev-list.
IOW, instead of
git-rev-list --merge-order
we could perhaps do
git-rev-list --parents [--topo-order?] | git-merge-order
so that the merge-order code wouldn't impact git-rev-list itself.
As it is, the merge-order code ends up hooking into the "process_commit"
thing (and thus to "filter_commit" which does the parent rewriting, and
then show_commit), which makes it harder to work with.
Now, rev-list.c is not the biggest file (apply.c is about twice the size),
but in many ways it's the most complex one by far. It's also the most
performance-critical one, and the one that it would be really nice if we
were to be able to libify it.
For example, instead of the horrid scriping language, I _think_ I could
almost libify it by just hooking into "show_commit", and using a callback
function for that (and then the stand-alone program would just make the
callback function be one that prints out the commit).
With some care, we might be able to make things like "git diff" be small C
programs (or, more likely, to save space and not replicate the binaries
many times - make the "git" binary able to do all the simple things on its
own: "git-diff" would be just a link to "git").
That would possibly be a simpler way to get away from using nonportable
scripts. Plain C really does remain one of the most portable things out
there.
Linus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Removal of "--merge-order"?
2006-02-24 18:07 ` Linus Torvalds
@ 2006-02-24 18:10 ` Randy.Dunlap
2006-02-24 21:37 ` Johannes Schindelin
1 sibling, 0 replies; 9+ messages in thread
From: Randy.Dunlap @ 2006-02-24 18:10 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Randy.Dunlap, Junio C Hamano, Git Mailing List
On Fri, 24 Feb 2006, Linus Torvalds wrote:
>
>
> On Fri, 24 Feb 2006, Randy.Dunlap wrote:
> >
> > Other than Ryan's reply, I found 2 users in a quick search,
> > but they have already stated that they are willing to change, so I
> > don't see objections unless someone else comes forward.
>
> One thing we could do - and might be simpler - is to make the merge-order
> thing be a post-processing phase of git-rev-list.
>
> IOW, instead of
>
> git-rev-list --merge-order
>
> we could perhaps do
>
> git-rev-list --parents [--topo-order?] | git-merge-order
>
> so that the merge-order code wouldn't impact git-rev-list itself.
Makes sense to me... thanks.
But even that may not be needed if noone else really needs it.
> As it is, the merge-order code ends up hooking into the "process_commit"
> thing (and thus to "filter_commit" which does the parent rewriting, and
> then show_commit), which makes it harder to work with.
>
> Now, rev-list.c is not the biggest file (apply.c is about twice the size),
> but in many ways it's the most complex one by far. It's also the most
> performance-critical one, and the one that it would be really nice if we
> were to be able to libify it.
>
> For example, instead of the horrid scriping language, I _think_ I could
> almost libify it by just hooking into "show_commit", and using a callback
> function for that (and then the stand-alone program would just make the
> callback function be one that prints out the commit).
>
> With some care, we might be able to make things like "git diff" be small C
> programs (or, more likely, to save space and not replicate the binaries
> many times - make the "git" binary able to do all the simple things on its
> own: "git-diff" would be just a link to "git").
>
> That would possibly be a simpler way to get away from using nonportable
> scripts. Plain C really does remain one of the most portable things out
> there.
--
~Randy
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Removal of "--merge-order"?
2006-02-24 16:32 Removal of "--merge-order"? Linus Torvalds
2006-02-24 16:53 ` Randy.Dunlap
@ 2006-02-24 19:25 ` Junio C Hamano
1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2006-02-24 19:25 UTC (permalink / raw)
To: Linus Torvalds; +Cc: git
Linus Torvalds <torvalds@osdl.org> writes:
> In other words, I'd really prefer if it was gone. Some of the things I
> might do to git-rev-list would be much simpler if I didn't have to worry
> about merge-order, and the way it interfaces with the rest of
> git-rev-list.
>
> Comments?
>
> Linus
I am really glad you brought it up. I would not miss it at all.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Removal of "--merge-order"?
2006-02-24 18:07 ` Linus Torvalds
2006-02-24 18:10 ` Randy.Dunlap
@ 2006-02-24 21:37 ` Johannes Schindelin
1 sibling, 0 replies; 9+ messages in thread
From: Johannes Schindelin @ 2006-02-24 21:37 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Randy.Dunlap, Junio C Hamano, Git Mailing List
Hi,
On Fri, 24 Feb 2006, Linus Torvalds wrote:
> Now, rev-list.c is not the biggest file (apply.c is about twice the size),
> but in many ways it's the most complex one by far. It's also the most
> performance-critical one, and the one that it would be really nice if we
> were to be able to libify it.
This is what I wanted to try today, but unfortunately I had to do real
work :-(
> For example, instead of the horrid scriping language, I _think_ I could
> almost libify it by just hooking into "show_commit", and using a callback
> function for that (and then the stand-alone program would just make the
> callback function be one that prints out the commit).
I don't find the scripting language you invented particularly horrid.
Maybe some odd things (like "if" branching to the "else" block whenever
*any* argument was passed), but not horrid.
But in the end I would prefer a libified git, if only to get rid of
double parsing (if you pipe the output of git-rev-list to another git
program, chances are that you parse the commit objects at least twice).
> That would possibly be a simpler way to get away from using nonportable
> scripts. Plain C really does remain one of the most portable things out
> there.
Yes.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2006-02-24 21:41 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-24 16:32 Removal of "--merge-order"? Linus Torvalds
2006-02-24 16:53 ` Randy.Dunlap
2006-02-24 17:23 ` Linus Torvalds
2006-02-24 17:32 ` Ryan Anderson
2006-02-24 17:47 ` Randy.Dunlap
2006-02-24 18:07 ` Linus Torvalds
2006-02-24 18:10 ` Randy.Dunlap
2006-02-24 21:37 ` Johannes Schindelin
2006-02-24 19:25 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox