Re: [PATCH 2/2] git-p4: Improve branch support

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

 



vitor.hda@xxxxxxxxx wrote on Tue, 15 Feb 2011 23:49 +0000:
> Add new config option branchUser to allow filtering P4 branch list by user.
> Allow defining the branch list through branchList config option.
> Correct base branch directory detection to use '/' as the split character.

I've only been avoiding reading this one because I don't use
branches, and am having a hard time following what the point
of the change is.  Maybe someone else will notice that this is
a good change straightaway, and save you the bother of explaining
it to me.

The whole detectBranches option seems a bit spotty, given its
lack of documentation and numerous shady "## HACK" and "## FIXME"
comments.  So it certainly does appreciate your attention.

As far as I can tell, a branch is just a mapping between two
areas of the repo, and all you can do with one is to feed it
to "p4 integrate" instead of giving a single explicit src/dest.

> @@ -1272,7 +1277,13 @@ class P4Sync(Command):
>      def getBranchMapping(self):
>          lostAndFoundBranches = set()
>  
> -        for info in p4CmdList("branches"):
> +        user = gitConfig("git-p4.branchUser")
> +        if len(user) > 0:
> +            command = "branches -u %s" % user
> +        else:
> +            command = "branches"
> +
> +        for info in p4CmdList(command):

This part is for branches -u, to limit the auto-detected braches
to just those created by a given user.

> @@ -1305,6 +1316,12 @@ class P4Sync(Command):
>          for branch in lostAndFoundBranches:
>              self.knownBranches[branch] = branch
>  
> +        configBranches = gitConfigList("git-p4.branchList")
> +        for branch in configBranches:
> +            if branch:
> +                (source, destination) = branch.split(":")
> +                self.knownBranches[destination] = source
> +

This bit adds more branches, if you have put them in .git/config
separated by a :.  Presumably things that are directories in the
depot but do _not_ have a branch?  I don't get it.  What does
your depot look like and what do you stick in branchList?

>          branches = p4BranchesInGit(self.importIntoRemotes)
>          for branch in branches.keys():
> @@ -1626,12 +1643,14 @@ class P4Sync(Command):
>                      else:
>                          paths = []
>                          for (prev, cur) in zip(self.previousDepotPaths, depotPaths):
> -                            for i in range(0, min(len(cur), len(prev))):
> -                                if cur[i] <> prev[i]:
> +                            prev_list = prev.split("/")
> +                            cur_list = cur.split("/")
> +                            for i in range(0, min(len(cur_list), len(prev_list))):
> +                                if cur_list[i] <> prev_list[i]:
>                                      i = i - 1
>                                      break
>  
> -                            paths.append (cur[:i + 1])
> +                            paths.append ("/".join(cur_list[:i + 1]))

This was a bug?  I guess somehow this is adapting the existing
depot paths to include new ones that you discovered with "p4
branches".  And now you are comparing the path elements instead
of going a character at a time.  Maybe to catch //depot/ab vs
//depot/ac ?

In other words, add some comments or add something to the commit
text.  It is encouraged to split up a patch into the smallest
logical chenk if the changes are all independent.  Maybe these
three are related through the theme of auto-branch detection.

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