mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-19 21:32:43 +01:00
Fix a Mercurial issue where split heads would be detected incorrectly
Summary: Ref T5197. When searching for split branch heads, we incorrectly consider descendant heads of other branches. This can cause us to detect a split tip when one does not exist (the old tip is the branch tip, but other descendant heads exist). Instead, consider only heads on the same branch. Test Plan: Repro is something like this: - `hg update default` - `hg branch branch1; hg commit ...` - `hg push` - `hg update default; hg commit ...` - `hg push` - Previously, we would find the head of `branch1` and incorrectly account for it as a head of `default`. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T5197 Differential Revision: https://secure.phabricator.com/D9308
This commit is contained in:
parent
bad7f3d49b
commit
66af361f10
1 changed files with 6 additions and 1 deletions
|
@ -760,10 +760,15 @@ final class DiffusionCommitHookEngine extends Phobject {
|
|||
// repository that's already full of garbage (strongly discouraged but
|
||||
// not as inherently dangerous). These cases should be very uncommon.
|
||||
|
||||
// NOTE: We're only looking for heads on the same branch. The old
|
||||
// tip of the branch may be the branchpoint for other branches, but that
|
||||
// is OK.
|
||||
|
||||
$dfutures = array();
|
||||
foreach ($old_heads as $old_head) {
|
||||
$dfutures[$old_head] = $repository->getLocalCommandFuture(
|
||||
'log --rev %s --template %s',
|
||||
'log --branch %s --rev %s --template %s',
|
||||
$ref,
|
||||
hgsprintf('(descendants(%s) and head())', $old_head),
|
||||
'{node}\1');
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue