git-p4: Allow branch definition with git config
Perforce does not strictly require the usage of branch specifications to create branches. In these cases the branch detection code of git-p4 will not be able to import them. This patch adds support for git-p4.branchList configuration option, allowing branches to be defined in git config. Signed-off-by: Vitor Antunes <vitor.hda@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
8ace74c00e
commit
7199cf131c
|
@ -342,6 +342,11 @@ def gitConfig(key, args = None): # set args to "--bool", for instance
|
||||||
_gitConfig[key] = read_pipe(cmd, ignore_error=True).strip()
|
_gitConfig[key] = read_pipe(cmd, ignore_error=True).strip()
|
||||||
return _gitConfig[key]
|
return _gitConfig[key]
|
||||||
|
|
||||||
|
def gitConfigList(key):
|
||||||
|
if not _gitConfig.has_key(key):
|
||||||
|
_gitConfig[key] = read_pipe("git config --get-all %s" % key, ignore_error=True).strip().split(os.linesep)
|
||||||
|
return _gitConfig[key]
|
||||||
|
|
||||||
def p4BranchesInGit(branchesAreInRemotes = True):
|
def p4BranchesInGit(branchesAreInRemotes = True):
|
||||||
branches = {}
|
branches = {}
|
||||||
|
|
||||||
|
@ -1490,6 +1495,25 @@ class P4Sync(Command, P4UserMap):
|
||||||
if source not in self.knownBranches:
|
if source not in self.knownBranches:
|
||||||
lostAndFoundBranches.add(source)
|
lostAndFoundBranches.add(source)
|
||||||
|
|
||||||
|
# Perforce does not strictly require branches to be defined, so we also
|
||||||
|
# check git config for a branch list.
|
||||||
|
#
|
||||||
|
# Example of branch definition in git config file:
|
||||||
|
# [git-p4]
|
||||||
|
# branchList=main:branchA
|
||||||
|
# branchList=main:branchB
|
||||||
|
# branchList=branchA:branchC
|
||||||
|
configBranches = gitConfigList("git-p4.branchList")
|
||||||
|
for branch in configBranches:
|
||||||
|
if branch:
|
||||||
|
(source, destination) = branch.split(":")
|
||||||
|
self.knownBranches[destination] = source
|
||||||
|
|
||||||
|
lostAndFoundBranches.discard(destination)
|
||||||
|
|
||||||
|
if source not in self.knownBranches:
|
||||||
|
lostAndFoundBranches.add(source)
|
||||||
|
|
||||||
|
|
||||||
for branch in lostAndFoundBranches:
|
for branch in lostAndFoundBranches:
|
||||||
self.knownBranches[branch] = branch
|
self.knownBranches[branch] = branch
|
||||||
|
|
|
@ -263,6 +263,13 @@ Only use branch specifications defined by the selected username.
|
||||||
|
|
||||||
git config [--global] git-p4.branchUser username
|
git config [--global] git-p4.branchUser username
|
||||||
|
|
||||||
|
git-p4.branchList
|
||||||
|
|
||||||
|
List of branches to be imported when branch detection is enabled.
|
||||||
|
|
||||||
|
git config [--global] git-p4.branchList main:branchA
|
||||||
|
git config [--global] --add git-p4.branchList main:branchB
|
||||||
|
|
||||||
Implementation Details...
|
Implementation Details...
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue