Page MenuHomePhabricator

D20421.diff
No OneTemporary

D20421.diff

diff --git a/src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php b/src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php
--- a/src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php
+++ b/src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php
@@ -128,10 +128,6 @@
private function discoverGitCommits() {
$repository = $this->getRepository();
- if (!$repository->isHosted()) {
- $this->verifyGitOrigin($repository);
- }
-
$heads = id(new DiffusionLowLevelGitRefQuery())
->setRepository($repository)
->execute();
diff --git a/src/applications/repository/engine/PhabricatorRepositoryEngine.php b/src/applications/repository/engine/PhabricatorRepositoryEngine.php
--- a/src/applications/repository/engine/PhabricatorRepositoryEngine.php
+++ b/src/applications/repository/engine/PhabricatorRepositoryEngine.php
@@ -70,123 +70,6 @@
return PhabricatorGlobalLock::newLock($lock_key, $lock_parts);
}
-
- /**
- * Verify that the "origin" remote exists, and points at the correct URI.
- *
- * This catches or corrects some types of misconfiguration, and also repairs
- * an issue where Git 1.7.1 does not create an "origin" for `--bare` clones.
- * See T4041.
- *
- * @param PhabricatorRepository Repository to verify.
- * @return void
- */
- protected function verifyGitOrigin(PhabricatorRepository $repository) {
- try {
- list($remotes) = $repository->execxLocalCommand(
- 'remote show -n origin');
- } catch (CommandException $ex) {
- throw new PhutilProxyException(
- pht(
- 'Expected to find a Git working copy at path "%s", but the '.
- 'path exists and is not a valid working copy. If you remove '.
- 'this directory, the daemons will automatically recreate it '.
- 'correctly. Phabricator will not destroy the directory for you '.
- 'because it can not be sure that it does not contain important '.
- 'data.',
- $repository->getLocalPath()),
- $ex);
- }
-
- $matches = null;
- if (!preg_match('/^\s*Fetch URL:\s*(.*?)\s*$/m', $remotes, $matches)) {
- throw new Exception(
- pht(
- "Expected '%s' in '%s'.",
- 'Fetch URL',
- 'git remote show -n origin'));
- }
-
- $remote_uri = $matches[1];
- $expect_remote = $repository->getRemoteURI();
-
- if ($remote_uri == 'origin') {
- // If a remote does not exist, git pretends it does and prints out a
- // made up remote where the URI is the same as the remote name. This is
- // definitely not correct.
-
- // Possibly, we should use `git remote --verbose` instead, which does not
- // suffer from this problem (but is a little more complicated to parse).
- $valid = false;
- $exists = false;
- } else {
- $normal_type_git = PhabricatorRepositoryURINormalizer::TYPE_GIT;
-
- $remote_normal = id(new PhabricatorRepositoryURINormalizer(
- $normal_type_git,
- $remote_uri))->getNormalizedPath();
-
- $expect_normal = id(new PhabricatorRepositoryURINormalizer(
- $normal_type_git,
- $expect_remote))->getNormalizedPath();
-
- $valid = ($remote_normal == $expect_normal);
- $exists = true;
- }
-
- // These URIs may have plaintext HTTP credentials. If they do, censor
- // them for display. See T12945.
- $display_remote = phutil_censor_credentials($remote_uri);
- $display_expect = phutil_censor_credentials($expect_remote);
-
- if (!$valid) {
- if (!$exists) {
- // If there's no "origin" remote, just create it regardless of how
- // strongly we own the working copy. There is almost no conceivable
- // scenario in which this could do damage.
- $this->log(
- pht(
- 'Remote "origin" does not exist. Creating "origin", with '.
- 'URI "%s".',
- $expect_remote));
- $repository->execxLocalCommand(
- 'remote add origin %P',
- $repository->getRemoteURIEnvelope());
-
- // NOTE: This doesn't fetch the origin (it just creates it), so we won't
- // know about origin branches until the next "pull" happens. That's fine
- // for our purposes, but might impact things in the future.
- } else {
- if ($repository->canDestroyWorkingCopy()) {
- // Bad remote, but we can try to repair it.
- $this->log(
- pht(
- 'Remote "origin" exists, but is pointed at the wrong URI, "%s". '.
- 'Resetting origin URI to "%s.',
- $remote_uri,
- $expect_remote));
- $repository->execxLocalCommand(
- 'remote set-url origin %P',
- $repository->getRemoteURIEnvelope());
- } else {
- // Bad remote and we aren't comfortable repairing it.
- $message = pht(
- 'Working copy at "%s" has a mismatched origin URI, "%s". '.
- 'The expected origin URI is "%s". Fix your configuration, or '.
- 'set the remote URI correctly. To avoid breaking anything, '.
- 'Phabricator will not automatically fix this.',
- $repository->getLocalPath(),
- $display_remote,
- $display_expect);
- throw new Exception($message);
- }
- }
- }
- }
-
-
-
-
/**
* @task internal
*/
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
@@ -122,7 +122,6 @@
$repository->getDisplayName()));
if ($is_git) {
- $this->verifyGitOrigin($repository);
$this->executeGitUpdate();
} else if ($is_hg) {
$this->executeMercurialUpdate();
@@ -352,20 +351,10 @@
$this->logRefDifferences($remote_refs, $local_refs);
- // Force the "origin" URI to the configured value.
- $repository->execxLocalCommand(
- 'remote set-url origin -- %P',
- $repository->getRemoteURIEnvelope());
-
- if ($repository->isWorkingCopyBare()) {
- // For bare working copies, we need this magic incantation.
- $future = $repository->getRemoteCommandFuture(
- 'fetch origin %s --prune',
- '+refs/*:refs/*');
- } else {
- $future = $repository->getRemoteCommandFuture(
- 'fetch --all --prune');
- }
+ $future = $repository->getRemoteCommandFuture(
+ 'fetch %P %s --prune',
+ $repository->getRemoteURIEnvelope(),
+ '+refs/*:refs/*');
$future
->setCWD($path)

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 14, 2:48 AM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7613649
Default Alt Text
D20421.diff (6 KB)

Event Timeline