Merge branch 'jk/p4-locate-branch-point-optim'
"git p4" learned to find branch points more efficiently. * jk/p4-locate-branch-point-optim: git-p4: speed up search for branch parent git-p4: ensure complex branches are cloned correctly
This commit is contained in:
commit
e289f681ed
21
git-p4.py
21
git-p4.py
@ -3600,19 +3600,18 @@ class P4Sync(Command, P4UserMap):
|
||||
return True
|
||||
|
||||
def searchParent(self, parent, branch, target):
|
||||
parentFound = False
|
||||
for blob in read_pipe_lines(["git", "rev-list", "--reverse",
|
||||
targetTree = read_pipe(["git", "rev-parse",
|
||||
"{}^{{tree}}".format(target)]).strip()
|
||||
for line in read_pipe_lines(["git", "rev-list", "--format=%H %T",
|
||||
"--no-merges", parent]):
|
||||
blob = blob.strip()
|
||||
if len(read_pipe(["git", "diff-tree", blob, target])) == 0:
|
||||
parentFound = True
|
||||
if line.startswith("commit "):
|
||||
continue
|
||||
commit, tree = line.strip().split(" ")
|
||||
if tree == targetTree:
|
||||
if self.verbose:
|
||||
print("Found parent of %s in commit %s" % (branch, blob))
|
||||
break
|
||||
if parentFound:
|
||||
return blob
|
||||
else:
|
||||
return None
|
||||
print("Found parent of %s in commit %s" % (branch, commit))
|
||||
return commit
|
||||
return None
|
||||
|
||||
def importChanges(self, changes, origin_revision=0):
|
||||
cnt = 1
|
||||
|
@ -294,11 +294,13 @@ test_expect_success 'git p4 clone complex branches' '
|
||||
test_path_is_file file3 &&
|
||||
grep update file2 &&
|
||||
git reset --hard p4/depot/branch4 &&
|
||||
git diff-tree --quiet HEAD &&
|
||||
test_path_is_file file1 &&
|
||||
test_path_is_file file2 &&
|
||||
test_path_is_missing file3 &&
|
||||
! grep update file2 &&
|
||||
git reset --hard p4/depot/branch5 &&
|
||||
git diff-tree --quiet HEAD &&
|
||||
test_path_is_file file1 &&
|
||||
test_path_is_file file2 &&
|
||||
test_path_is_file file3 &&
|
||||
|
Loading…
Reference in New Issue
Block a user