Page MenuHomePhabricator

D20450.diff
No OneTemporary

D20450.diff

diff --git a/src/applications/diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php b/src/applications/diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php
--- a/src/applications/diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php
+++ b/src/applications/diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php
@@ -46,22 +46,12 @@
// NOTE: We can't use DiffusionLowLevelGitRefQuery here because
// `git for-each-ref` does not support `--contains`.
- if ($repository->isWorkingCopyBare()) {
- list($stdout) = $repository->execxLocalCommand(
- 'branch --verbose --no-abbrev --contains %s -- %Ls',
- $contains,
- $patterns_argv);
- $ref_map = DiffusionGitBranch::parseLocalBranchOutput(
- $stdout);
- } else {
- list($stdout) = $repository->execxLocalCommand(
- 'branch -r --verbose --no-abbrev --contains %s -- %Ls',
- $contains,
- $patterns_argv);
- $ref_map = DiffusionGitBranch::parseRemoteBranchOutput(
- $stdout,
- DiffusionGitBranch::DEFAULT_GIT_REMOTE);
- }
+ list($stdout) = $repository->execxLocalCommand(
+ 'branch --verbose --no-abbrev --contains %s -- %Ls',
+ $contains,
+ $patterns_argv);
+ $ref_map = DiffusionGitBranch::parseLocalBranchOutput(
+ $stdout);
$refs = array();
foreach ($ref_map as $ref => $commit) {
diff --git a/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php b/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php
--- a/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php
+++ b/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php
@@ -33,16 +33,9 @@
$prefixes = array();
- if ($repository->isWorkingCopyBare()) {
- $branch_prefix = 'refs/heads/';
- } else {
- $remote = DiffusionGitBranch::DEFAULT_GIT_REMOTE;
- $branch_prefix = 'refs/remotes/'.$remote.'/';
- }
-
+ $branch_prefix = 'refs/heads/';
$tag_prefix = 'refs/tags/';
-
if ($with_refs || count($ref_types) > 1) {
// If we're loading refs or more than one type of ref, just query
// everything.
diff --git a/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php b/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php
--- a/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php
+++ b/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php
@@ -366,8 +366,12 @@
$fetch_rules = $this->getGitFetchRules($repository);
+ // For very old non-bare working copies, we need to use "--update-head-ok"
+ // to tell Git that it is allowed to overwrite whatever is currently
+ // checked out. See T13280.
+
$future = $repository->getRemoteCommandFuture(
- 'fetch --prune -- %P %Ls',
+ 'fetch --prune --update-head-ok -- %P %Ls',
$repository->getRemoteURIEnvelope(),
$fetch_rules);

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 13, 8:58 AM (2 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7470956
Default Alt Text
D20450.diff (2 KB)

Event Timeline