Re: New SCM and commit list

2005-04-18 Thread Catalin Marinas
Paul Jackson <[EMAIL PROTECTED]> wrote:
>> "merge" does a better job than "diff3" since it can resolve the
>
> The merge command I know of is part of Tichy's RCS tools,
> and calls diff3, and has no inherent superior abilities.

You are right, I missed some diff3 options. It looks like "diff3 -mE"
generates the same output as "merge" (i.e. solving the identical
changes in the derived files). Sorry for the noise :-)

-- 
Catalin

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-18 Thread Catalin Marinas
Paul Jackson [EMAIL PROTECTED] wrote:
 merge does a better job than diff3 since it can resolve the

 The merge command I know of is part of Tichy's RCS tools,
 and calls diff3, and has no inherent superior abilities.

You are right, I missed some diff3 options. It looks like diff3 -mE
generates the same output as merge (i.e. solving the identical
changes in the derived files). Sorry for the noise :-)

-- 
Catalin

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-16 Thread Paul Jackson
> "merge" does a better job than "diff3" since it can resolve the

The merge command I know of is part of Tichy's RCS tools,
and calls diff3, and has no inherent superior abilities.

Is this the merge command you have in mind here?

-- 
  I won't rest till it's the best ...
  Programmer, Linux Scalability
  Paul Jackson <[EMAIL PROTECTED]> 1.650.933.1373, 
1.925.600.0401
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-16 Thread Paul Jackson
 merge does a better job than diff3 since it can resolve the

The merge command I know of is part of Tichy's RCS tools,
and calls diff3, and has no inherent superior abilities.

Is this the merge command you have in mind here?

-- 
  I won't rest till it's the best ...
  Programmer, Linux Scalability
  Paul Jackson [EMAIL PROTECTED] 1.650.933.1373, 
1.925.600.0401
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-13 Thread H. Peter Anvin
Followup to:  <[EMAIL PROTECTED]>
By author:Linus Torvalds <[EMAIL PROTECTED]>
In newsgroup: linux.dev.kernel
> 
> On Mon, 11 Apr 2005, Greg KH wrote:
> > 
> > I have a feeling that the kernel.org mirror system is just going to
> > _love_ us using it to store temporary git trees :)
> 
> I don't think kernel.org mirrors the private home directories, so it you
> do _temporary_ trees, just make them readable in your private home
> directory rather than in /pub/linux/kernel/people. For people with 
> kernel.org accounts, we can use that as the "bkbits.net" thing.
> 
> For really public hosting, we need to find some other approach. 
> 

It's also pretty trivial to set up an additional /pub hierarchy, like
the current /pub/scm, which is up to individual mirrors to pick up or
not to pick up.  We only require /pub/linux and /pub/software to be
mirrored.

-hpa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-13 Thread H. Peter Anvin
Followup to:  [EMAIL PROTECTED]
By author:Linus Torvalds [EMAIL PROTECTED]
In newsgroup: linux.dev.kernel
 
 On Mon, 11 Apr 2005, Greg KH wrote:
  
  I have a feeling that the kernel.org mirror system is just going to
  _love_ us using it to store temporary git trees :)
 
 I don't think kernel.org mirrors the private home directories, so it you
 do _temporary_ trees, just make them readable in your private home
 directory rather than in /pub/linux/kernel/people. For people with 
 kernel.org accounts, we can use that as the bkbits.net thing.
 
 For really public hosting, we need to find some other approach. 
 

It's also pretty trivial to set up an additional /pub hierarchy, like
the current /pub/scm, which is up to individual mirrors to pick up or
not to pick up.  We only require /pub/linux and /pub/software to be
mirrored.

-hpa
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-12 Thread Daniel Barkalow
On Tue, 12 Apr 2005, Adam J. Richter wrote:

> On 2005-04-11, Daniel Barkalow wrote:
> >If merge took trees instead of single files, and had some way of detecting
> >renames (or it got additional information about the differences between
> >files), would that give BK-quality performance? Or does BK also support
> >cases like:
> >
> >orig ---> first ---> first-merge -
> > |/   \
> > |--> second - -> final
> > |\   /
> > |--> third ---> third-merge -
> >
> >where the final merge requires, for complete cleanliness, a comparison of
> >more than 3 states (since some changes will have orig as the common
> >ancestor and some will have second).
> 
>   With 3-way merge and the ability to regenerate the relevant
> files from each step, this should be easy to handle as long
> as you have a list of which patches are considered to have been
> duplicated.  Let's detail your example:
> 
> orig ---> first 1a 1b 1c ---> first-merge - 1d 1e
>  |  /\
>  |--> second 2a 2b 2c -   -> final
>  |  \/
>  |--> third 3a 3b 3c ---> third-merge - 3d 3e
> 
> Here, 1a, 1b, etc. refer to specific states of the source tree.
> I will refer to differences by a notation like "1a->1b", which
> is the difference to go from snapshot 1a to 1b.  All that the
> merge algorithm for the final merge needs to know is that the
> ends of the branches (that is, 1e and 3e) both contain the
> following diffs:
> 
>   orig->2a
>   2a->2b
>   2b->2c
> 
>   The function merge(orig, ver1, ver2) can try to reverse
> the duplicate merges in one of the branches:
> 
>   1e' = merge( 1e, 2c->2b);
>   1e'' = merge(1e', 2b->2a);
>   1e''' = merge(1e'', 2a->orig);
>   return merge(1e''', 2c->3e)

If 1d->1e depends on something in the 2 series, which is why I would
expect 1e to be pushing something containing the 2 series, there must be
conflicts. Likewise on the 3 series.

>   Of course, conflicts can happen, but that can happen
> in any merge.  There are also other ways to calculate the
> merge and because there are different ways one can write a
> merge function, it is possible that merging in a different
> order might produce slightly different results.  For example,
> it would be possible to reverse the dpulicates in your "third merge"
> branch instead of your "first merge" branch, or one could
> reconstruct a branch without the duplicated merges by executing
> the other changes forward from a common ancestor, like so:
> 
>   1e''' = merge(orig, 3d->3e);
> 
>   ...regardless, the point is that all the information
> that is absolutely needed is a list of instance of diffs
> to be skipped.  It is not even necessary that the changes
> have such a clearly explainable ancestory as that you have
> described.  All the merge program needs to know are the changes
> to be skipped, although information like changes the skipped
> patches are duplicating may be useful for things like trying
> to reverse a patch in your "third-merge" branch in your
> example if reverseing the patch in "first-merge" fails.

Right, an extended primitive solves the problem, certainly, and much more
effectively than sticking with 3-way merge.

>   I believe that at least bitkeeper, darcs, a free python-based
> system that I can't remember at the moment, and possibly arch do this
> sort of machination already.
> 
> 
> >Does this happen in real life? [...]
> 
>   Yes.  Both individual users and Linux distributions incorporate
> patches that they think are useful to them and then futher patches
> that they develop.  The time costs of rejecting such patches would
> likely be paid for by other integration or development work not being
> done.

It seems to me that users who use extra patches keep these separate from
their own patches (which they often keep in multiple series):

orig ---> other-people ---> local use, distribution
 |   /
 |--> mine --
 |   \
 |--> etc-> mainline

If mainline is going to get the third-party patches in a distro tree, it
should get them from the original authors, not as part of a miscellaneous
patch set from the distro. If one patch series depends on another patch
series, it should hold off until the other one goes in, not include it in
the submission.

> >It seems like sane development processes
>
> >wouldn't have multiple mainline-candidate patch sets including the same
> >patches, if for no other reason than that, should the merge fail, nobody
> >with any clue about the original patches would be anywhere nearby.
> 
>   If you could avoid prejudicial subjective adjectives, it
> it would make it easier for the saneness or insaneness of an
> approach to be apparent just by 

Re: New SCM and commit list

2005-04-12 Thread Catalin Marinas
Linus Torvalds <[EMAIL PROTECTED]> wrote:
> So anything that got modified in just one tree obviously merges to that 
> version. Any file that got modified in two trees will end up just being 
> passed to the "merge" program. See "man merge" and "man diff3". The merger 
> gets to fix up any conflicts by hand.

"merge" does a better job than "diff3" since it can resolve the
conflicts caused by similar changes to a "parent" file (this is
available in both BK and GNU Arch). This is useful when you try to
merge 2 branches that both include a patch which is not under the
revision control. It also solves the conflicts caused by
cherry-picking changes (just need to find the last consecutive common
changeset as the common ancestor).

-- 
Catalin

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-12 Thread Geert Uytterhoeven
On Mon, 11 Apr 2005, Daniel Barkalow wrote:
> If merge took trees instead of single files, and had some way of detecting
> renames (or it got additional information about the differences between
> files), would that give BK-quality performance? Or does BK also support

I wrote a script to do merges on a tree (so far without rename detection,
though ;-) a long time ago, and still use it every time Linus or Marcelo
release a new version.

Look at `mergetree' on http://linux-m68k-cvs.ubb.ca/~geert/

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-12 Thread Arjan van de Ven
On Mon, 2005-04-11 at 16:31 -0500, James Bottomley wrote:
> On Mon, 2005-04-11 at 14:26 -0700, Linus Torvalds wrote:
> > I don't think kernel.org mirrors the private home directories, so it you
> > do _temporary_ trees, just make them readable in your private home
> > directory rather than in /pub/linux/kernel/people. For people with 
> > kernel.org accounts, we can use that as the "bkbits.net" thing.
> 
> It's also going to be a slight problem for those of us who don't have a
> kernel.org account...although I think the hosting I use on the parisc
> website might actually be outside the HP firewall, so I can probably beg
> for it to run any protocol you need (like rsync).

rsync also runs over ssh so if you can ssh in you can rsync to it

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-12 Thread Arjan van de Ven
On Mon, 2005-04-11 at 16:31 -0500, James Bottomley wrote:
 On Mon, 2005-04-11 at 14:26 -0700, Linus Torvalds wrote:
  I don't think kernel.org mirrors the private home directories, so it you
  do _temporary_ trees, just make them readable in your private home
  directory rather than in /pub/linux/kernel/people. For people with 
  kernel.org accounts, we can use that as the bkbits.net thing.
 
 It's also going to be a slight problem for those of us who don't have a
 kernel.org account...although I think the hosting I use on the parisc
 website might actually be outside the HP firewall, so I can probably beg
 for it to run any protocol you need (like rsync).

rsync also runs over ssh so if you can ssh in you can rsync to it

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-12 Thread Geert Uytterhoeven
On Mon, 11 Apr 2005, Daniel Barkalow wrote:
 If merge took trees instead of single files, and had some way of detecting
 renames (or it got additional information about the differences between
 files), would that give BK-quality performance? Or does BK also support

I wrote a script to do merges on a tree (so far without rename detection,
though ;-) a long time ago, and still use it every time Linus or Marcelo
release a new version.

Look at `mergetree' on http://linux-m68k-cvs.ubb.ca/~geert/

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say programmer or something like that.
-- Linus Torvalds
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-12 Thread Catalin Marinas
Linus Torvalds [EMAIL PROTECTED] wrote:
 So anything that got modified in just one tree obviously merges to that 
 version. Any file that got modified in two trees will end up just being 
 passed to the merge program. See man merge and man diff3. The merger 
 gets to fix up any conflicts by hand.

merge does a better job than diff3 since it can resolve the
conflicts caused by similar changes to a parent file (this is
available in both BK and GNU Arch). This is useful when you try to
merge 2 branches that both include a patch which is not under the
revision control. It also solves the conflicts caused by
cherry-picking changes (just need to find the last consecutive common
changeset as the common ancestor).

-- 
Catalin

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-12 Thread Daniel Barkalow
On Tue, 12 Apr 2005, Adam J. Richter wrote:

 On 2005-04-11, Daniel Barkalow wrote:
 If merge took trees instead of single files, and had some way of detecting
 renames (or it got additional information about the differences between
 files), would that give BK-quality performance? Or does BK also support
 cases like:
 
 orig --- first --- first-merge -
  |/   \
  |-- second - - final
  |\   /
  |-- third --- third-merge -
 
 where the final merge requires, for complete cleanliness, a comparison of
 more than 3 states (since some changes will have orig as the common
 ancestor and some will have second).
 
   With 3-way merge and the ability to regenerate the relevant
 files from each step, this should be easy to handle as long
 as you have a list of which patches are considered to have been
 duplicated.  Let's detail your example:
 
 orig --- first 1a 1b 1c --- first-merge - 1d 1e
  |  /\
  |-- second 2a 2b 2c -   - final
  |  \/
  |-- third 3a 3b 3c --- third-merge - 3d 3e
 
 Here, 1a, 1b, etc. refer to specific states of the source tree.
 I will refer to differences by a notation like 1a-1b, which
 is the difference to go from snapshot 1a to 1b.  All that the
 merge algorithm for the final merge needs to know is that the
 ends of the branches (that is, 1e and 3e) both contain the
 following diffs:
 
   orig-2a
   2a-2b
   2b-2c
 
   The function merge(orig, ver1, ver2) can try to reverse
 the duplicate merges in one of the branches:
 
   1e' = merge( 1e, 2c-2b);
   1e'' = merge(1e', 2b-2a);
   1e''' = merge(1e'', 2a-orig);
   return merge(1e''', 2c-3e)

If 1d-1e depends on something in the 2 series, which is why I would
expect 1e to be pushing something containing the 2 series, there must be
conflicts. Likewise on the 3 series.

   Of course, conflicts can happen, but that can happen
 in any merge.  There are also other ways to calculate the
 merge and because there are different ways one can write a
 merge function, it is possible that merging in a different
 order might produce slightly different results.  For example,
 it would be possible to reverse the dpulicates in your third merge
 branch instead of your first merge branch, or one could
 reconstruct a branch without the duplicated merges by executing
 the other changes forward from a common ancestor, like so:
 
   1e''' = merge(orig, 3d-3e);
 
   ...regardless, the point is that all the information
 that is absolutely needed is a list of instance of diffs
 to be skipped.  It is not even necessary that the changes
 have such a clearly explainable ancestory as that you have
 described.  All the merge program needs to know are the changes
 to be skipped, although information like changes the skipped
 patches are duplicating may be useful for things like trying
 to reverse a patch in your third-merge branch in your
 example if reverseing the patch in first-merge fails.

Right, an extended primitive solves the problem, certainly, and much more
effectively than sticking with 3-way merge.

   I believe that at least bitkeeper, darcs, a free python-based
 system that I can't remember at the moment, and possibly arch do this
 sort of machination already.
 
 
 Does this happen in real life? [...]
 
   Yes.  Both individual users and Linux distributions incorporate
 patches that they think are useful to them and then futher patches
 that they develop.  The time costs of rejecting such patches would
 likely be paid for by other integration or development work not being
 done.

It seems to me that users who use extra patches keep these separate from
their own patches (which they often keep in multiple series):

orig --- other-people --- local use, distribution
 |   /
 |-- mine --
 |   \
 |-- etc- mainline

If mainline is going to get the third-party patches in a distro tree, it
should get them from the original authors, not as part of a miscellaneous
patch set from the distro. If one patch series depends on another patch
series, it should hold off until the other one goes in, not include it in
the submission.

 It seems like sane development processes

 wouldn't have multiple mainline-candidate patch sets including the same
 patches, if for no other reason than that, should the merge fail, nobody
 with any clue about the original patches would be anywhere nearby.
 
   If you could avoid prejudicial subjective adjectives, it
 it would make it easier for the saneness or insaneness of an
 approach to be apparent just by discussing your more objective criteria,
 like the remainder of your sentence, which is where the focus should
 be.
 
   (1) Does allowing 

Re: New SCM and commit list

2005-04-11 Thread Adam J. Richter
On 2005-04-11, Daniel Barkalow wrote:
>If merge took trees instead of single files, and had some way of detecting
>renames (or it got additional information about the differences between
>files), would that give BK-quality performance? Or does BK also support
>cases like:
>
>orig ---> first ---> first-merge -
> |/   \
> |--> second - -> final
> |\   /
> |--> third ---> third-merge -
>
>where the final merge requires, for complete cleanliness, a comparison of
>more than 3 states (since some changes will have orig as the common
>ancestor and some will have second).

With 3-way merge and the ability to regenerate the relevant
files from each step, this should be easy to handle as long
as you have a list of which patches are considered to have been
duplicated.  Let's detail your example:

orig ---> first 1a 1b 1c ---> first-merge - 1d 1e
 |  /\
 |--> second 2a 2b 2c -   -> final
 |  \/
 |--> third 3a 3b 3c ---> third-merge - 3d 3e

Here, 1a, 1b, etc. refer to specific states of the source tree.
I will refer to differences by a notation like "1a->1b", which
is the difference to go from snapshot 1a to 1b.  All that the
merge algorithm for the final merge needs to know is that the
ends of the branches (that is, 1e and 3e) both contain the
following diffs:

orig->2a
2a->2b
2b->2c

The function merge(orig, ver1, ver2) can try to reverse
the duplicate merges in one of the branches:

1e' = merge( 1e, 2c->2b);
1e'' = merge(1e', 2b->2a);
1e''' = merge(1e'', 2a->orig);
return merge(1e''', 2c->3e)

Of course, conflicts can happen, but that can happen
in any merge.  There are also other ways to calculate the
merge and because there are different ways one can write a
merge function, it is possible that merging in a different
order might produce slightly different results.  For example,
it would be possible to reverse the dpulicates in your "third merge"
branch instead of your "first merge" branch, or one could
reconstruct a branch without the duplicated merges by executing
the other changes forward from a common ancestor, like so:

1e''' = merge(orig, 3d->3e);

...regardless, the point is that all the information
that is absolutely needed is a list of instance of diffs
to be skipped.  It is not even necessary that the changes
have such a clearly explainable ancestory as that you have
described.  All the merge program needs to know are the changes
to be skipped, although information like changes the skipped
patches are duplicating may be useful for things like trying
to reverse a patch in your "third-merge" branch in your
example if reverseing the patch in "first-merge" fails.

I believe that at least bitkeeper, darcs, a free python-based
system that I can't remember at the moment, and possibly arch do this
sort of machination already.


>Does this happen in real life? [...]

Yes.  Both individual users and Linux distributions incorporate
patches that they think are useful to them and then futher patches
that they develop.  The time costs of rejecting such patches would
likely be paid for by other integration or development work not being
done.

>It seems like sane development processes
   
>wouldn't have multiple mainline-candidate patch sets including the same
>patches, if for no other reason than that, should the merge fail, nobody
>with any clue about the original patches would be anywhere nearby.

If you could avoid prejudicial subjective adjectives, it
it would make it easier for the saneness or insaneness of an
approach to be apparent just by discussing your more objective criteria,
like the remainder of your sentence, which is where the focus should
be.

(1) Does allowing duplicate patches really mean that
   "nobody with any clue about the original patches would be
   anywhere near by?"  What attracts these clueful people
   just by third parties having to rebase their patches?

(2) Does this supposed benefit outweigh the cost of rejecting
many patches unnecessarily?  I know from my own experience
that I have either given up on or had to put into a very low
priority mode at least 66% of the patches that I haven't
gotten integrated, but which I am confident the kernel
would be better having (e.g.: devfs shrink, lookup()
trapping, ipv4 as a loadable (not not yet removable) module,
sysfs memory shrink, factoring much of the DMA mapping to
the common bus code from individual drivers, fewer kmap's
in crypto, I could go on).

>It
>seems better to throw something back to someone to 

Re: New SCM and commit list

2005-04-11 Thread Daniel Barkalow
On Sun, 10 Apr 2005, Linus Torvalds wrote:

> On Mon, 11 Apr 2005, Jeff Garzik wrote:
> > 
> > > But I hope that I can get non-conflicting merges done fairly soon, and 
> > > maybe I can con James or Jeff or somebody to try out GIT then...
> > 
> > I don't mind being a guinea pig as long as someone else does the hard 
> > work of finding a new way to merge :)
> 
> So I can tell you what merges are going to be like, just to prepare you.
> 
> First, the good news: I think we can make the workflow look like bk, ie
> pretty much like "git pull" and "git push".  And for well-behaved stuff
> (ie minimal changes to the same files on both sides) it will even be fast.  
> I think.
> 
> Then the bad news: the merge algorithm is going to suck. It's going to be
> just plain 3-way merge, the same RCS/CVS thing you've seen before. With no
> understanding of renames etc. I'll try to find the best parent to base the
> merge off of, although early testers may have to tell the piece of crud
> what the most recent common parent was.
>
> So anything that got modified in just one tree obviously merges to that 
> version. Any file that got modified in two trees will end up just being 
> passed to the "merge" program. See "man merge" and "man diff3". The merger 
> gets to fix up any conflicts by hand.

If merge took trees instead of single files, and had some way of detecting
renames (or it got additional information about the differences between
files), would that give BK-quality performance? Or does BK also support
cases like:

orig ---> first ---> first-merge -
 |/   \
 |--> second - -> final
 |\   /
 |--> third ---> third-merge -

where the final merge requires, for complete cleanliness, a comparison of
more than 3 states (since some changes will have orig as the common
ancestor and some will have second).

Does this happen in real life? It seems like sane development processes
wouldn't have multiple mainline-candidate patch sets including the same
patches, if for no other reason than that, should the merge fail, nobody
with any clue about the original patches would be anywhere nearby. It
seems better to throw something back to someone to rebase their diffs.

Otherwise, the problem seems to boil down to finding the common ancestor
well, getting trees instead of files to merge, and improving merge until
it handles all of the tractible cases.

-Daniel
*This .sig left intentionally blank*

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread James Bottomley
On Mon, 2005-04-11 at 14:26 -0700, Linus Torvalds wrote:
> I don't think kernel.org mirrors the private home directories, so it you
> do _temporary_ trees, just make them readable in your private home
> directory rather than in /pub/linux/kernel/people. For people with 
> kernel.org accounts, we can use that as the "bkbits.net" thing.

It's also going to be a slight problem for those of us who don't have a
kernel.org account...although I think the hosting I use on the parisc
website might actually be outside the HP firewall, so I can probably beg
for it to run any protocol you need (like rsync).

James


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Linus Torvalds


On Mon, 11 Apr 2005, Greg KH wrote:
> 
> I have a feeling that the kernel.org mirror system is just going to
> _love_ us using it to store temporary git trees :)

I don't think kernel.org mirrors the private home directories, so it you
do _temporary_ trees, just make them readable in your private home
directory rather than in /pub/linux/kernel/people. For people with 
kernel.org accounts, we can use that as the "bkbits.net" thing.

For really public hosting, we need to find some other approach. 

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Greg KH
On Sun, Apr 10, 2005 at 10:25:22PM -0500, James Bottomley wrote:
> On Sun, 2005-04-10 at 16:26 -0700, Linus Torvalds wrote:
> > On Mon, 11 Apr 2005, Benjamin Herrenschmidt wrote:
> > > If yes, then I would appreciate if you could either keep the same list,
> > > or if you want to change the list name, keep the subscriber list so
> > > those of us who actually archive it don't miss anything ;)
> > 
> > I didn't even set up the list. I think it's Bottomley. I'm cc'ing him just 
> > so that he sees the message, but I don't actually expect him to do 
> > anything about it. I'm not even ready to start _testing_ real merges yet. 
> > But I hope that I can get non-conflicting merges done fairly soon, and 
> > maybe I can con James or Jeff or somebody to try out GIT then...
> 
> Not guilty.  If I remember correctly, the list was set up by the vger
> list maintainers (davem and company).  It was tied to a trigger in one
> of your trees (which I think Larry did).  It shouldn't be too difficult
> to add to git ... it just means traversing all the added patches on a
> merge and sending out mail.
> 
> I can try out your source control tools ... I have some rc fixes
> ready ... when you're ready to try out merges...

I have some rc fixes too, let us know when you are ready to accept them,
and what format you want them in.

I have a feeling that the kernel.org mirror system is just going to
_love_ us using it to store temporary git trees :)

thanks,

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Chris Mason
On Monday 11 April 2005 08:51, Chris Mason wrote:

> rej -M skips the merge program, so rej -a -M will give you something like
> this:
>
> coffee:/local/linux.p # rej -a -M drivers/ide/ide.c.rej
> drivers/ide/ide.c: 1 matched, 0 conflicts remain
>
> But I would want to go over the bit that calculates the conflicts remaining
> more carefully if people plan on trusting this ;) 

Ok,  looks like this should be safe.  I changed -q to skip the gui compare 
when rej thinks it has resolved all the conflicts correctly.  With rej 0.14 
(just uploaded now) this should do what you want:

rej -q -a foo.rej 

Download site is here: ftp://ftp.suse.com/pub/people/mason/rej/

Please let me know if you find patches where rej is doing the wrong thing.

-chris
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Adam J. Richter
On 2005-04-11 Linus Torvalds wrote:
>Then the bad news: the merge algorithm is going to suck. It's going to be
>just plain 3-way merge, the same RCS/CVS thing you've seen before. With no
>understanding of renames etc. I'll try to find the best parent to base the
>merge off of, although early testers may have to tell the piece of crud
>what the most recent common parent was.

I've been surprised at how well it works to put each character on a
separate line, pipe the input into diff3 and then join the lines
back together.  For example, let's consider the case of
a adding parameters to a function.  Here one version adds a parameter
before the existing parameter, and another version adds another parameter
after the existing parameter:

$ cat orig
call(bar);
$ cat ver1
call(foo,bar);
$ cat ver2
call(bar,baz);
$ charmerge ver1 orig ver2
call(foo,bar,baz);

A more practically scaled application that I tried was with
another filter that I wrote that would automatically resolve certain
types of diff3 conflicts[1].  With that filter, I took the SCSI
FlashPoint driver, and made an edited version by piping it through GNU
indent, which not only reindents, but also splits and joins lines.
I made a second edited version by changing all 146 instances of
"SYNC" to "GROP" in the original.  It merged apparently successfully,
giving me a GNU indented version with all of the keyword changes.
The version of this resolution program dies if it his a diff3
conflict of a type that it is not prepared to resolve.  I'll post
it once I've got it properly preserving the conflicts that it
doesn't try to fix.  In the meantime, here is an illustrative
script to do get diff3 to do character-based merges, although it
gives garbage results if there are any conflicts.

[1] The type of conflict that was automatically resolved is as follows:

variant1 = 

result --> 

...this is actually exactly the order one would want in the
case where  also occurs in variant2, but it was close
enough for this test.

__ __ 
Adam J. Richter\ /
[EMAIL PROTECTED]  | g g d r a s i l



#!/bin/sh
# Usage: charmerge ver1_file orig_file ver2_file

lineify() {
sed 's/\([^\n]\)/\1\
/g'
}

unlineify() {
awk '/^$/ {print $0} /^..*/ { printf "%s", $0}'
}

tmpdir=/tmp/charmerge.$$

mkdir $tmpdir
lineify < "$1" > $tmpdir/1
lineify < "$2" > $tmpdir/2
lineify < "$3" > $tmpdir/3
diff3 -m $tmpdir/{1,2,3} | unlineify
rm -rf $tmpdir
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Chris Mason
On Monday 11 April 2005 03:38, Ingo Molnar wrote:
> * Linus Torvalds <[EMAIL PROTECTED]> wrote:
> > So anything that got modified in just one tree obviously merges to
> > that version. Any file that got modified in two trees will end up just
> > being passed to the "merge" program. See "man merge" and "man diff3".
> > The merger gets to fix up any conflicts by hand.
>
> at that point Chris Mason's "rej" tool is pretty nifty:
>
>   ftp://ftp.suse.com/pub/people/mason/rej/rej-0.13.tar.gz
>
> (There is no fully automatic mode in where it would not bother the user
> with the really trivial rejects - but it has an automatic mode where you
> basically have to do nothing - maybe a fully automatic one could be
> added that would resolve low-risk rejects?)
>

rej -M skips the merge program, so rej -a -M will give you something like 
this:

coffee:/local/linux.p # rej -a -M drivers/ide/ide.c.rej
drivers/ide/ide.c: 1 matched, 0 conflicts remain

But I would want to go over the bit that calculates the conflicts remaining 
more carefully if people plan on trusting this ;)  It'll run on unified diffs 
too, although it will be slower then patch since the assumption is the quick 
and easy placement patch does has already failed.  (that's easy enough to fix 
though).

> it's really easy to use (but then again i'm a vim user, so i'm biased),
> just try it on a random .rej file you have ("rej -a kernel/sched.c.rej"
> or whatever).

you can rej -m kdiff3|meld|tkdiff or any program that does a side by side 
comparison of two files. (export REJMERGE=foo sets the diff prog as well)

I use rej frequently to merge patches in here, but that is mostly because 
there is no easy way to get the common ancestor and parent revision of the 
patches I'm merging.

With that info in hand, kdiff3 is pretty nice.  You would have to spoon feed 
it the renames, but it should have most of the other features you're looking 
for, including the 'no gui if all conflicts are auto-solvable'

-chris
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Ingo Molnar

* Linus Torvalds <[EMAIL PROTECTED]> wrote:

> Then the bad news: the merge algorithm is going to suck. It's going to 
> be just plain 3-way merge, the same RCS/CVS thing you've seen before.  
> With no understanding of renames etc. I'll try to find the best parent 
> to base the merge off of, although early testers may have to tell the 
> piece of crud what the most recent common parent was.
> 
> So anything that got modified in just one tree obviously merges to 
> that version. Any file that got modified in two trees will end up just 
> being passed to the "merge" program. See "man merge" and "man diff3".  
> The merger gets to fix up any conflicts by hand.

at that point Chris Mason's "rej" tool is pretty nifty:

  ftp://ftp.suse.com/pub/people/mason/rej/rej-0.13.tar.gz

it gets the trivial rejects right, and is pretty powerful to quickly 
cycle through the nontrivial ones too. It shows the old and new code 
side by side too, etc.

(There is no fully automatic mode in where it would not bother the user 
with the really trivial rejects - but it has an automatic mode where you 
basically have to do nothing - maybe a fully automatic one could be 
added that would resolve low-risk rejects?)

it's really easy to use (but then again i'm a vim user, so i'm biased), 
just try it on a random .rej file you have ("rej -a kernel/sched.c.rej" 
or whatever).

Ingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread David Woodhouse
On Mon, 2005-04-11 at 09:10 +1000, Benjamin Herrenschmidt wrote:
> Do you intend to continue posting "commited" patches to a mailing list
> like bk scripts did to [EMAIL PROTECTED] ? As I said a while ago, I
> find this very useful, especially with the actual patch included in the
> commit message (which isn't the case with most other projects CVS commit
> lists, and I find that annoying).
> 
> If yes, then I would appreciate if you could either keep the same list,
> or if you want to change the list name, keep the subscriber list so
> those of us who actually archive it don't miss anything ;)

The commits lists currently only accept posts from [EMAIL PROTECTED], I
believe. That can relatively easily be changed if the mail is going to
come from somewhere else.

I did ask Linus to let me know as soon as possible when he starts to
commit patches, so we can come up with a way to keep the list fed. Since
he thinks I'm James, however, I suspect that part of the message didn't
get through. Perhaps he was just distracted by the Britishness?

-- 
dwmw2


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Geert Uytterhoeven
On Sun, 10 Apr 2005, Linus Torvalds wrote:
> Then the bad news: the merge algorithm is going to suck. It's going to be
> just plain 3-way merge, the same RCS/CVS thing you've seen before. With no

Actually 3-way merge is not that bad. It's definitely better than ClearCase's
merge (I always fall back to RCS merge if ClearCase cannot resolve a merge
automatically).

> understanding of renames etc. I'll try to find the best parent to base the
> merge off of, although early testers may have to tell the piece of crud
> what the most recent common parent was.

Yep, finding the best parent is the important part :-)

I guess 3-way merge got a bad name because CVS always uses the branch point as
the parent, which fails miserably for any but the first merge after the branch.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Ryan Anderson
On Sun, Apr 10, 2005 at 11:15:20PM -0700, Linus Torvalds wrote:
> On Mon, 11 Apr 2005, Jeff Garzik wrote:
> > > But I hope that I can get non-conflicting merges done fairly soon, and 
> > > maybe I can con James or Jeff or somebody to try out GIT then...
> > 
> > I don't mind being a guinea pig as long as someone else does the hard 
> > work of finding a new way to merge :)
> 
> So I can tell you what merges are going to be like, just to prepare you.
> 
> First, the good news: I think we can make the workflow look like bk, ie
> pretty much like "git pull" and "git push".  And for well-behaved stuff
> (ie minimal changes to the same files on both sides) it will even be fast.  
> I think.

If you can stick something meaningful in a simple text file, overwritten
after each merge completes, similar to the BitKeeper/csets-in file, it
should be trivial to write a wrapper for the basic merge tool that calls
a trigger after each merge and uses csets-in to generate diffs and email
them out.

-- 

Ryan Anderson
  sometimes Pug Majere
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Linus Torvalds


On Mon, 11 Apr 2005, Jeff Garzik wrote:
> 
> > But I hope that I can get non-conflicting merges done fairly soon, and 
> > maybe I can con James or Jeff or somebody to try out GIT then...
> 
> I don't mind being a guinea pig as long as someone else does the hard 
> work of finding a new way to merge :)

So I can tell you what merges are going to be like, just to prepare you.

First, the good news: I think we can make the workflow look like bk, ie
pretty much like "git pull" and "git push".  And for well-behaved stuff
(ie minimal changes to the same files on both sides) it will even be fast.  
I think.

Then the bad news: the merge algorithm is going to suck. It's going to be
just plain 3-way merge, the same RCS/CVS thing you've seen before. With no
understanding of renames etc. I'll try to find the best parent to base the
merge off of, although early testers may have to tell the piece of crud
what the most recent common parent was.

So anything that got modified in just one tree obviously merges to that 
version. Any file that got modified in two trees will end up just being 
passed to the "merge" program. See "man merge" and "man diff3". The merger 
gets to fix up any conflicts by hand.

Quite frankly, that means that we really want to avoid any "exciting" 
merges with GIT. Maybe somebody can come up with something smarter. 
Eventually. Don't count on it, at least not in the near future.

The good news is that it's not like a three-way file merge is any worse
than many people are used to. The bad news is that BK is just a hell of a
lot better. So anybody who has been depending heavily on BK merges (and
hey, the beauty of them is that you often don't even _know_ that you are
depending on them) will be a bit bummed by the "Welcome back to the
1980's" message from a three-way merge.

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Linus Torvalds


On Mon, 11 Apr 2005, Jeff Garzik wrote:
 
  But I hope that I can get non-conflicting merges done fairly soon, and 
  maybe I can con James or Jeff or somebody to try out GIT then...
 
 I don't mind being a guinea pig as long as someone else does the hard 
 work of finding a new way to merge :)

So I can tell you what merges are going to be like, just to prepare you.

First, the good news: I think we can make the workflow look like bk, ie
pretty much like git pull and git push.  And for well-behaved stuff
(ie minimal changes to the same files on both sides) it will even be fast.  
I think.

Then the bad news: the merge algorithm is going to suck. It's going to be
just plain 3-way merge, the same RCS/CVS thing you've seen before. With no
understanding of renames etc. I'll try to find the best parent to base the
merge off of, although early testers may have to tell the piece of crud
what the most recent common parent was.

So anything that got modified in just one tree obviously merges to that 
version. Any file that got modified in two trees will end up just being 
passed to the merge program. See man merge and man diff3. The merger 
gets to fix up any conflicts by hand.

Quite frankly, that means that we really want to avoid any exciting 
merges with GIT. Maybe somebody can come up with something smarter. 
Eventually. Don't count on it, at least not in the near future.

The good news is that it's not like a three-way file merge is any worse
than many people are used to. The bad news is that BK is just a hell of a
lot better. So anybody who has been depending heavily on BK merges (and
hey, the beauty of them is that you often don't even _know_ that you are
depending on them) will be a bit bummed by the Welcome back to the
1980's message from a three-way merge.

Linus
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Ryan Anderson
On Sun, Apr 10, 2005 at 11:15:20PM -0700, Linus Torvalds wrote:
 On Mon, 11 Apr 2005, Jeff Garzik wrote:
   But I hope that I can get non-conflicting merges done fairly soon, and 
   maybe I can con James or Jeff or somebody to try out GIT then...
  
  I don't mind being a guinea pig as long as someone else does the hard 
  work of finding a new way to merge :)
 
 So I can tell you what merges are going to be like, just to prepare you.
 
 First, the good news: I think we can make the workflow look like bk, ie
 pretty much like git pull and git push.  And for well-behaved stuff
 (ie minimal changes to the same files on both sides) it will even be fast.  
 I think.

If you can stick something meaningful in a simple text file, overwritten
after each merge completes, similar to the BitKeeper/csets-in file, it
should be trivial to write a wrapper for the basic merge tool that calls
a trigger after each merge and uses csets-in to generate diffs and email
them out.

-- 

Ryan Anderson
  sometimes Pug Majere
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Geert Uytterhoeven
On Sun, 10 Apr 2005, Linus Torvalds wrote:
 Then the bad news: the merge algorithm is going to suck. It's going to be
 just plain 3-way merge, the same RCS/CVS thing you've seen before. With no

Actually 3-way merge is not that bad. It's definitely better than ClearCase's
merge (I always fall back to RCS merge if ClearCase cannot resolve a merge
automatically).

 understanding of renames etc. I'll try to find the best parent to base the
 merge off of, although early testers may have to tell the piece of crud
 what the most recent common parent was.

Yep, finding the best parent is the important part :-)

I guess 3-way merge got a bad name because CVS always uses the branch point as
the parent, which fails miserably for any but the first merge after the branch.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say programmer or something like that.
-- Linus Torvalds
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread David Woodhouse
On Mon, 2005-04-11 at 09:10 +1000, Benjamin Herrenschmidt wrote:
 Do you intend to continue posting commited patches to a mailing list
 like bk scripts did to [EMAIL PROTECTED] ? As I said a while ago, I
 find this very useful, especially with the actual patch included in the
 commit message (which isn't the case with most other projects CVS commit
 lists, and I find that annoying).
 
 If yes, then I would appreciate if you could either keep the same list,
 or if you want to change the list name, keep the subscriber list so
 those of us who actually archive it don't miss anything ;)

The commits lists currently only accept posts from [EMAIL PROTECTED], I
believe. That can relatively easily be changed if the mail is going to
come from somewhere else.

I did ask Linus to let me know as soon as possible when he starts to
commit patches, so we can come up with a way to keep the list fed. Since
he thinks I'm James, however, I suspect that part of the message didn't
get through. Perhaps he was just distracted by the Britishness?

-- 
dwmw2


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Ingo Molnar

* Linus Torvalds [EMAIL PROTECTED] wrote:

 Then the bad news: the merge algorithm is going to suck. It's going to 
 be just plain 3-way merge, the same RCS/CVS thing you've seen before.  
 With no understanding of renames etc. I'll try to find the best parent 
 to base the merge off of, although early testers may have to tell the 
 piece of crud what the most recent common parent was.
 
 So anything that got modified in just one tree obviously merges to 
 that version. Any file that got modified in two trees will end up just 
 being passed to the merge program. See man merge and man diff3.  
 The merger gets to fix up any conflicts by hand.

at that point Chris Mason's rej tool is pretty nifty:

  ftp://ftp.suse.com/pub/people/mason/rej/rej-0.13.tar.gz

it gets the trivial rejects right, and is pretty powerful to quickly 
cycle through the nontrivial ones too. It shows the old and new code 
side by side too, etc.

(There is no fully automatic mode in where it would not bother the user 
with the really trivial rejects - but it has an automatic mode where you 
basically have to do nothing - maybe a fully automatic one could be 
added that would resolve low-risk rejects?)

it's really easy to use (but then again i'm a vim user, so i'm biased), 
just try it on a random .rej file you have (rej -a kernel/sched.c.rej 
or whatever).

Ingo
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Chris Mason
On Monday 11 April 2005 03:38, Ingo Molnar wrote:
 * Linus Torvalds [EMAIL PROTECTED] wrote:
  So anything that got modified in just one tree obviously merges to
  that version. Any file that got modified in two trees will end up just
  being passed to the merge program. See man merge and man diff3.
  The merger gets to fix up any conflicts by hand.

 at that point Chris Mason's rej tool is pretty nifty:

   ftp://ftp.suse.com/pub/people/mason/rej/rej-0.13.tar.gz

 (There is no fully automatic mode in where it would not bother the user
 with the really trivial rejects - but it has an automatic mode where you
 basically have to do nothing - maybe a fully automatic one could be
 added that would resolve low-risk rejects?)


rej -M skips the merge program, so rej -a -M will give you something like 
this:

coffee:/local/linux.p # rej -a -M drivers/ide/ide.c.rej
drivers/ide/ide.c: 1 matched, 0 conflicts remain

But I would want to go over the bit that calculates the conflicts remaining 
more carefully if people plan on trusting this ;)  It'll run on unified diffs 
too, although it will be slower then patch since the assumption is the quick 
and easy placement patch does has already failed.  (that's easy enough to fix 
though).

 it's really easy to use (but then again i'm a vim user, so i'm biased),
 just try it on a random .rej file you have (rej -a kernel/sched.c.rej
 or whatever).

you can rej -m kdiff3|meld|tkdiff or any program that does a side by side 
comparison of two files. (export REJMERGE=foo sets the diff prog as well)

I use rej frequently to merge patches in here, but that is mostly because 
there is no easy way to get the common ancestor and parent revision of the 
patches I'm merging.

With that info in hand, kdiff3 is pretty nice.  You would have to spoon feed 
it the renames, but it should have most of the other features you're looking 
for, including the 'no gui if all conflicts are auto-solvable'

-chris
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Adam J. Richter
On 2005-04-11 Linus Torvalds wrote:
Then the bad news: the merge algorithm is going to suck. It's going to be
just plain 3-way merge, the same RCS/CVS thing you've seen before. With no
understanding of renames etc. I'll try to find the best parent to base the
merge off of, although early testers may have to tell the piece of crud
what the most recent common parent was.

I've been surprised at how well it works to put each character on a
separate line, pipe the input into diff3 and then join the lines
back together.  For example, let's consider the case of
a adding parameters to a function.  Here one version adds a parameter
before the existing parameter, and another version adds another parameter
after the existing parameter:

$ cat orig
call(bar);
$ cat ver1
call(foo,bar);
$ cat ver2
call(bar,baz);
$ charmerge ver1 orig ver2
call(foo,bar,baz);

A more practically scaled application that I tried was with
another filter that I wrote that would automatically resolve certain
types of diff3 conflicts[1].  With that filter, I took the SCSI
FlashPoint driver, and made an edited version by piping it through GNU
indent, which not only reindents, but also splits and joins lines.
I made a second edited version by changing all 146 instances of
SYNC to GROP in the original.  It merged apparently successfully,
giving me a GNU indented version with all of the keyword changes.
The version of this resolution program dies if it his a diff3
conflict of a type that it is not prepared to resolve.  I'll post
it once I've got it properly preserving the conflicts that it
doesn't try to fix.  In the meantime, here is an illustrative
script to do get diff3 to do character-based merges, although it
gives garbage results if there are any conflicts.

[1] The type of conflict that was automatically resolved is as follows:

variant1 = prepended-new-textoriginalappended-new-text

result -- prepended-new-textvariant2appended-new-text

...this is actually exactly the order one would want in the
case where original also occurs in variant2, but it was close
enough for this test.

__ __ 
Adam J. Richter\ /
[EMAIL PROTECTED]  | g g d r a s i l



#!/bin/sh
# Usage: charmerge ver1_file orig_file ver2_file

lineify() {
sed 's/\([^\n]\)/\1\
/g'
}

unlineify() {
awk '/^$/ {print $0} /^..*/ { printf %s, $0}'
}

tmpdir=/tmp/charmerge.$$

mkdir $tmpdir
lineify  $1  $tmpdir/1
lineify  $2  $tmpdir/2
lineify  $3  $tmpdir/3
diff3 -m $tmpdir/{1,2,3} | unlineify
rm -rf $tmpdir
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Chris Mason
On Monday 11 April 2005 08:51, Chris Mason wrote:

 rej -M skips the merge program, so rej -a -M will give you something like
 this:

 coffee:/local/linux.p # rej -a -M drivers/ide/ide.c.rej
 drivers/ide/ide.c: 1 matched, 0 conflicts remain

 But I would want to go over the bit that calculates the conflicts remaining
 more carefully if people plan on trusting this ;) 

Ok,  looks like this should be safe.  I changed -q to skip the gui compare 
when rej thinks it has resolved all the conflicts correctly.  With rej 0.14 
(just uploaded now) this should do what you want:

rej -q -a foo.rej 

Download site is here: ftp://ftp.suse.com/pub/people/mason/rej/

Please let me know if you find patches where rej is doing the wrong thing.

-chris
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Greg KH
On Sun, Apr 10, 2005 at 10:25:22PM -0500, James Bottomley wrote:
 On Sun, 2005-04-10 at 16:26 -0700, Linus Torvalds wrote:
  On Mon, 11 Apr 2005, Benjamin Herrenschmidt wrote:
   If yes, then I would appreciate if you could either keep the same list,
   or if you want to change the list name, keep the subscriber list so
   those of us who actually archive it don't miss anything ;)
  
  I didn't even set up the list. I think it's Bottomley. I'm cc'ing him just 
  so that he sees the message, but I don't actually expect him to do 
  anything about it. I'm not even ready to start _testing_ real merges yet. 
  But I hope that I can get non-conflicting merges done fairly soon, and 
  maybe I can con James or Jeff or somebody to try out GIT then...
 
 Not guilty.  If I remember correctly, the list was set up by the vger
 list maintainers (davem and company).  It was tied to a trigger in one
 of your trees (which I think Larry did).  It shouldn't be too difficult
 to add to git ... it just means traversing all the added patches on a
 merge and sending out mail.
 
 I can try out your source control tools ... I have some rc fixes
 ready ... when you're ready to try out merges...

I have some rc fixes too, let us know when you are ready to accept them,
and what format you want them in.

I have a feeling that the kernel.org mirror system is just going to
_love_ us using it to store temporary git trees :)

thanks,

greg k-h
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Linus Torvalds


On Mon, 11 Apr 2005, Greg KH wrote:
 
 I have a feeling that the kernel.org mirror system is just going to
 _love_ us using it to store temporary git trees :)

I don't think kernel.org mirrors the private home directories, so it you
do _temporary_ trees, just make them readable in your private home
directory rather than in /pub/linux/kernel/people. For people with 
kernel.org accounts, we can use that as the bkbits.net thing.

For really public hosting, we need to find some other approach. 

Linus
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread James Bottomley
On Mon, 2005-04-11 at 14:26 -0700, Linus Torvalds wrote:
 I don't think kernel.org mirrors the private home directories, so it you
 do _temporary_ trees, just make them readable in your private home
 directory rather than in /pub/linux/kernel/people. For people with 
 kernel.org accounts, we can use that as the bkbits.net thing.

It's also going to be a slight problem for those of us who don't have a
kernel.org account...although I think the hosting I use on the parisc
website might actually be outside the HP firewall, so I can probably beg
for it to run any protocol you need (like rsync).

James


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Daniel Barkalow
On Sun, 10 Apr 2005, Linus Torvalds wrote:

 On Mon, 11 Apr 2005, Jeff Garzik wrote:
  
   But I hope that I can get non-conflicting merges done fairly soon, and 
   maybe I can con James or Jeff or somebody to try out GIT then...
  
  I don't mind being a guinea pig as long as someone else does the hard 
  work of finding a new way to merge :)
 
 So I can tell you what merges are going to be like, just to prepare you.
 
 First, the good news: I think we can make the workflow look like bk, ie
 pretty much like git pull and git push.  And for well-behaved stuff
 (ie minimal changes to the same files on both sides) it will even be fast.  
 I think.
 
 Then the bad news: the merge algorithm is going to suck. It's going to be
 just plain 3-way merge, the same RCS/CVS thing you've seen before. With no
 understanding of renames etc. I'll try to find the best parent to base the
 merge off of, although early testers may have to tell the piece of crud
 what the most recent common parent was.

 So anything that got modified in just one tree obviously merges to that 
 version. Any file that got modified in two trees will end up just being 
 passed to the merge program. See man merge and man diff3. The merger 
 gets to fix up any conflicts by hand.

If merge took trees instead of single files, and had some way of detecting
renames (or it got additional information about the differences between
files), would that give BK-quality performance? Or does BK also support
cases like:

orig --- first --- first-merge -
 |/   \
 |-- second - - final
 |\   /
 |-- third --- third-merge -

where the final merge requires, for complete cleanliness, a comparison of
more than 3 states (since some changes will have orig as the common
ancestor and some will have second).

Does this happen in real life? It seems like sane development processes
wouldn't have multiple mainline-candidate patch sets including the same
patches, if for no other reason than that, should the merge fail, nobody
with any clue about the original patches would be anywhere nearby. It
seems better to throw something back to someone to rebase their diffs.

Otherwise, the problem seems to boil down to finding the common ancestor
well, getting trees instead of files to merge, and improving merge until
it handles all of the tractible cases.

-Daniel
*This .sig left intentionally blank*

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-11 Thread Adam J. Richter
On 2005-04-11, Daniel Barkalow wrote:
If merge took trees instead of single files, and had some way of detecting
renames (or it got additional information about the differences between
files), would that give BK-quality performance? Or does BK also support
cases like:

orig --- first --- first-merge -
 |/   \
 |-- second - - final
 |\   /
 |-- third --- third-merge -

where the final merge requires, for complete cleanliness, a comparison of
more than 3 states (since some changes will have orig as the common
ancestor and some will have second).

With 3-way merge and the ability to regenerate the relevant
files from each step, this should be easy to handle as long
as you have a list of which patches are considered to have been
duplicated.  Let's detail your example:

orig --- first 1a 1b 1c --- first-merge - 1d 1e
 |  /\
 |-- second 2a 2b 2c -   - final
 |  \/
 |-- third 3a 3b 3c --- third-merge - 3d 3e

Here, 1a, 1b, etc. refer to specific states of the source tree.
I will refer to differences by a notation like 1a-1b, which
is the difference to go from snapshot 1a to 1b.  All that the
merge algorithm for the final merge needs to know is that the
ends of the branches (that is, 1e and 3e) both contain the
following diffs:

orig-2a
2a-2b
2b-2c

The function merge(orig, ver1, ver2) can try to reverse
the duplicate merges in one of the branches:

1e' = merge( 1e, 2c-2b);
1e'' = merge(1e', 2b-2a);
1e''' = merge(1e'', 2a-orig);
return merge(1e''', 2c-3e)

Of course, conflicts can happen, but that can happen
in any merge.  There are also other ways to calculate the
merge and because there are different ways one can write a
merge function, it is possible that merging in a different
order might produce slightly different results.  For example,
it would be possible to reverse the dpulicates in your third merge
branch instead of your first merge branch, or one could
reconstruct a branch without the duplicated merges by executing
the other changes forward from a common ancestor, like so:

1e''' = merge(orig, 3d-3e);

...regardless, the point is that all the information
that is absolutely needed is a list of instance of diffs
to be skipped.  It is not even necessary that the changes
have such a clearly explainable ancestory as that you have
described.  All the merge program needs to know are the changes
to be skipped, although information like changes the skipped
patches are duplicating may be useful for things like trying
to reverse a patch in your third-merge branch in your
example if reverseing the patch in first-merge fails.

I believe that at least bitkeeper, darcs, a free python-based
system that I can't remember at the moment, and possibly arch do this
sort of machination already.


Does this happen in real life? [...]

Yes.  Both individual users and Linux distributions incorporate
patches that they think are useful to them and then futher patches
that they develop.  The time costs of rejecting such patches would
likely be paid for by other integration or development work not being
done.

It seems like sane development processes
   
wouldn't have multiple mainline-candidate patch sets including the same
patches, if for no other reason than that, should the merge fail, nobody
with any clue about the original patches would be anywhere nearby.

If you could avoid prejudicial subjective adjectives, it
it would make it easier for the saneness or insaneness of an
approach to be apparent just by discussing your more objective criteria,
like the remainder of your sentence, which is where the focus should
be.

(1) Does allowing duplicate patches really mean that
   nobody with any clue about the original patches would be
   anywhere near by?  What attracts these clueful people
   just by third parties having to rebase their patches?

(2) Does this supposed benefit outweigh the cost of rejecting
many patches unnecessarily?  I know from my own experience
that I have either given up on or had to put into a very low
priority mode at least 66% of the patches that I haven't
gotten integrated, but which I am confident the kernel
would be better having (e.g.: devfs shrink, lookup()
trapping, ipv4 as a loadable (not not yet removable) module,
sysfs memory shrink, factoring much of the DMA mapping to
the common bus code from individual drivers, fewer kmap's
in crypto, I could go on).

It
seems better to throw something back to someone to rebase their diffs.
   ^^

I try to avoid a 

Re: New SCM and commit list

2005-04-10 Thread Jeff Garzik
Linus Torvalds wrote:
On Mon, 11 Apr 2005, Benjamin Herrenschmidt wrote:
If yes, then I would appreciate if you could either keep the same list,
or if you want to change the list name, keep the subscriber list so
those of us who actually archive it don't miss anything ;)

I didn't even set up the list. I think it's Bottomley. I'm cc'ing him just 
so that he sees the message, but I don't actually expect him to do 
anything about it. I'm not even ready to start _testing_ real merges yet. 
When you think kernel.org and BitKeeper, think either me or David 
Woodhouse.  :)

DaveM / Matti(?) manage the lists ([EMAIL PROTECTED]), but 
largely just create them on request from others, and make sure they 
continue to work.


But I hope that I can get non-conflicting merges done fairly soon, and 
maybe I can con James or Jeff or somebody to try out GIT then...
I don't mind being a guinea pig as long as someone else does the hard 
work of finding a new way to merge :)

Jeff
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-10 Thread James Bottomley
On Sun, 2005-04-10 at 16:26 -0700, Linus Torvalds wrote:
> On Mon, 11 Apr 2005, Benjamin Herrenschmidt wrote:
> > If yes, then I would appreciate if you could either keep the same list,
> > or if you want to change the list name, keep the subscriber list so
> > those of us who actually archive it don't miss anything ;)
> 
> I didn't even set up the list. I think it's Bottomley. I'm cc'ing him just 
> so that he sees the message, but I don't actually expect him to do 
> anything about it. I'm not even ready to start _testing_ real merges yet. 
> But I hope that I can get non-conflicting merges done fairly soon, and 
> maybe I can con James or Jeff or somebody to try out GIT then...

Not guilty.  If I remember correctly, the list was set up by the vger
list maintainers (davem and company).  It was tied to a trigger in one
of your trees (which I think Larry did).  It shouldn't be too difficult
to add to git ... it just means traversing all the added patches on a
merge and sending out mail.

I can try out your source control tools ... I have some rc fixes
ready ... when you're ready to try out merges...

James


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-10 Thread Linus Torvalds


On Mon, 11 Apr 2005, Benjamin Herrenschmidt wrote:
> 
> Do you intend to continue posting "commited" patches to a mailing list
> like bk scripts did to [EMAIL PROTECTED] ? As I said a while ago, I
> find this very useful, especially with the actual patch included in the
> commit message (which isn't the case with most other projects CVS commit
> lists, and I find that annoying).

Absolutely. GIT isn't quite at the point where I can start using it yet,
though.

I could actually start committing patches, but I want to make sure that I
can also do automated simple merges, so that there is any _point_ to doing
this in the first place. My plan is to not be very good at merging (in 
particular, I don't see GIT resolving renames _at_all_), but my hope is 
that the people who used to merge with me using BK might be able to still 
do so using GIT, as long as we try actively to be very careful.

> If yes, then I would appreciate if you could either keep the same list,
> or if you want to change the list name, keep the subscriber list so
> those of us who actually archive it don't miss anything ;)

I didn't even set up the list. I think it's Bottomley. I'm cc'ing him just 
so that he sees the message, but I don't actually expect him to do 
anything about it. I'm not even ready to start _testing_ real merges yet. 
But I hope that I can get non-conflicting merges done fairly soon, and 
maybe I can con James or Jeff or somebody to try out GIT then...

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-10 Thread Linus Torvalds


On Mon, 11 Apr 2005, Benjamin Herrenschmidt wrote:
 
 Do you intend to continue posting commited patches to a mailing list
 like bk scripts did to [EMAIL PROTECTED] ? As I said a while ago, I
 find this very useful, especially with the actual patch included in the
 commit message (which isn't the case with most other projects CVS commit
 lists, and I find that annoying).

Absolutely. GIT isn't quite at the point where I can start using it yet,
though.

I could actually start committing patches, but I want to make sure that I
can also do automated simple merges, so that there is any _point_ to doing
this in the first place. My plan is to not be very good at merging (in 
particular, I don't see GIT resolving renames _at_all_), but my hope is 
that the people who used to merge with me using BK might be able to still 
do so using GIT, as long as we try actively to be very careful.

 If yes, then I would appreciate if you could either keep the same list,
 or if you want to change the list name, keep the subscriber list so
 those of us who actually archive it don't miss anything ;)

I didn't even set up the list. I think it's Bottomley. I'm cc'ing him just 
so that he sees the message, but I don't actually expect him to do 
anything about it. I'm not even ready to start _testing_ real merges yet. 
But I hope that I can get non-conflicting merges done fairly soon, and 
maybe I can con James or Jeff or somebody to try out GIT then...

Linus
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-10 Thread James Bottomley
On Sun, 2005-04-10 at 16:26 -0700, Linus Torvalds wrote:
 On Mon, 11 Apr 2005, Benjamin Herrenschmidt wrote:
  If yes, then I would appreciate if you could either keep the same list,
  or if you want to change the list name, keep the subscriber list so
  those of us who actually archive it don't miss anything ;)
 
 I didn't even set up the list. I think it's Bottomley. I'm cc'ing him just 
 so that he sees the message, but I don't actually expect him to do 
 anything about it. I'm not even ready to start _testing_ real merges yet. 
 But I hope that I can get non-conflicting merges done fairly soon, and 
 maybe I can con James or Jeff or somebody to try out GIT then...

Not guilty.  If I remember correctly, the list was set up by the vger
list maintainers (davem and company).  It was tied to a trigger in one
of your trees (which I think Larry did).  It shouldn't be too difficult
to add to git ... it just means traversing all the added patches on a
merge and sending out mail.

I can try out your source control tools ... I have some rc fixes
ready ... when you're ready to try out merges...

James


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: New SCM and commit list

2005-04-10 Thread Jeff Garzik
Linus Torvalds wrote:
On Mon, 11 Apr 2005, Benjamin Herrenschmidt wrote:
If yes, then I would appreciate if you could either keep the same list,
or if you want to change the list name, keep the subscriber list so
those of us who actually archive it don't miss anything ;)

I didn't even set up the list. I think it's Bottomley. I'm cc'ing him just 
so that he sees the message, but I don't actually expect him to do 
anything about it. I'm not even ready to start _testing_ real merges yet. 
When you think kernel.org and BitKeeper, think either me or David 
Woodhouse.  :)

DaveM / Matti(?) manage the lists ([EMAIL PROTECTED]), but 
largely just create them on request from others, and make sure they 
continue to work.


But I hope that I can get non-conflicting merges done fairly soon, and 
maybe I can con James or Jeff or somebody to try out GIT then...
I don't mind being a guinea pig as long as someone else does the hard 
work of finding a new way to merge :)

Jeff
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/