Re: [StGit PATCH] Add the --merged option to goto

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

 



On 2009-03-20 16:15:45 +0000, Catalin Marinas wrote:

> This patch adds support for checking which patches were already
> merged upstream. This checking is done by trying to reverse-apply
> the patches in the index before pushing them onto the stack. The
> trivial merge cases in Index.merge() are ignored when performing
> this operation otherwise the results could be wrong (e.g. a patch
> adding a hunk and a subsequent patch canceling the previous change
> would both be considered merged).
>
> Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxxxx>
> ---
>
> This is in preparation for the updating of the push command where we
> have this functionality (I think we had it for goto as well but was
> lost with the update to stgit.lib). Test cases with --merged are
> already done for the push command, so I haven't added any for goto
> (but I'll push this patch only after push is updated).

Looks good, except for a few things:

> @@ -732,7 +732,7 @@ class Index(RunWithEnv):
>          # to use --binary.
>          self.apply(self.__repository.diff_tree(tree1, tree2, ['--full-index']),
>                     quiet)
> -    def merge(self, base, ours, theirs, current = None):
> +    def merge(self, base, ours, theirs, current = None, check_trivial = True):
>          """Use the index (and only the index) to do a 3-way merge of the
>          L{Tree}s C{base}, C{ours} and C{theirs}. The merge will either
>          succeed (in which case the first half of the return value is

Please update the documentation with your new option. :-)

> @@ -752,12 +752,13 @@ class Index(RunWithEnv):
>          assert current == None or isinstance(current, Tree)
>  
>          # Take care of the really trivial cases.
> -        if base == ours:
> -            return (theirs, current)
> -        if base == theirs:
> -            return (ours, current)
> -        if ours == theirs:
> -            return (ours, current)
> +        if check_trivial:
> +            if base == ours:
> +                return (theirs, current)
> +            if base == theirs:
> +                return (ours, current)
> +            if ours == theirs:
> +                return (ours, current)

Uh, what? What's the point of not doing this unconditionally?

> @@ -379,3 +385,25 @@ class StackTransaction(object):
>          assert set(self.unapplied + self.hidden) == set(unapplied + hidden)
>          self.unapplied = unapplied
>          self.hidden = hidden
> +
> +    def check_merged(self, patches):
> +        """Return a subset of patches already merged."""
> +        merged = []
> +        temp_index = self.__stack.repository.temp_index()
> +        temp_index_tree = None

There's no need to create a new temp index here. The transaction
object already has one.

-- 
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]

  Powered by Linux