Re: Inheritance of files for parent/child branches

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Feb 16, 2008 at 11:32:01AM -0600, Adam Flott wrote:

> The only redeeming feature in AccuRev was the ability to an use
> inheritance for files in streams (nearly analogous to branches). While
> this idea in the SCM world sounds strange, is there anything in git land
> that could mimic this sort of behavior?
>
> In case, "inheritance for files..." isn't clear, what I would like to
> accomplish is: have a branch "parent" with multiple "children" branches
> (which may have descendents of their own). If a file is committed to the
> parent branch, then the all the descendents would receive the same
> update without manually cherry-picking the commit across all the
> branches.

Wouldn't that just be a merge of the parent branch into the child
branch? Which really isn't any different than cherry-picking, except
that you retain the history instead of picking the one patch. In both
cases, you are saying "take the differences in the parent tree between
point X and point Y, and merge them into what I have now." In the case
of cherry pick, you are saying that X is really Y^. In the case of a
merge, you are saying that X is "the last point parent and child merged"
(.e., git merge-base parent child).

It won't happen _automatically_, though, and I don't think it should
(since each merge may have conflicts). But you could probably accomplish
what you want by cascading the merges. Something like:

  git checkout parent
  hack hack hack
  git commit -a -m whatever
  cascade_merge() {
    parent=$1
    for child in `somehow lookup the child branches of $parent`
    do
      git checkout $child
      git merge $parent
      cascade_merge $child
    done
  }
  cascade merge parent

This snippet is illustrative, not functional; recursion in the shell
will stomp on the variables. But more importantly, the "git merge" may
actually require human intervention. So you need to stop, let the user
fix up the working tree, and then continue.

-Peff
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux