Re: [RFC][StGit PATCH] Add support for merge-friendly branches

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

 



On 2009-05-28 12:12:42 +0100, Catalin Marinas wrote:

> The patch proposes a new StGit command called "publish". This
> command allows one to develop patches normally on a StGit branch but
> publish the stack changes to a separate, merge-friendly branch whose
> history is not re-writable.

Hmm, interesting. I don't think I'd want to use a command like this
myself, but I can see how it might be useful.

> +    # check for same tree (already up to date)
> +    if public_tree.sha1 == stack.head.data.tree.sha1:
> +        out.info('"%s" already up to date' % public_ref)
> +        return
> +
> +    # check for rebased stack. In this case we emulate a merge with the stack
> +    # base by setting two parents.
> +    merge_base = repository.get_merge_base(public_head, stack.base)
> +    if merge_base.sha1 != stack.base.sha1:
> +        public_head = __create_commit(repository, stack.head.data.tree,
> +                                      [public_head, stack.base], options)
> +        repository.refs.set(public_ref, public_head, 'publish')
> +        out.info('Merged the stack base into "%s"' % public_ref)
> +        return

Hmm. Couldn't the merge base conceivably be higher up in the stack?
Like, right at the beginning, don't we have public_head == stack.head?
That would be caught by the "same tree" check" a bit earlier, but
after adding another patch, don't we have public_head == stack.head^ ?
Which would give merge_base == public_head.

> +    def get_merge_base(self, commit1, commit2):
> +        """Return the merge base of two commits."""
> +        sha1 = self.run(['git', 'merge-base',
> +                         commit1.sha1, commit2.sha1]).output_one_line()
> +        return self.get_commit(sha1)

This funcion should probably return a list of zero or more merge
bases. See the --all flag to git merge-base.

-- 
Karl Hasselström, kha@xxxxxxxxxxx
      www.treskal.com/kalle
--
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]