Skip to content

Commit

Permalink
Merge branch 'jk/p4-locate-branch-point-optim'
Browse files Browse the repository at this point in the history
"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
  • Loading branch information
gitster committed May 13, 2021
2 parents eede711 + 6b79818 commit e289f68
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 11 deletions.
21 changes: 10 additions & 11 deletions git-p4.py
Original file line number Diff line number Diff line change
Expand Up @@ -3600,19 +3600,18 @@ def importNewBranch(self, branch, maxChange):
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
Expand Down
2 changes: 2 additions & 0 deletions t/t9801-git-p4-branch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 &&
Expand Down

0 comments on commit e289f68

Please sign in to comment.