当前位置: 首页>>代码示例>>PHP>>正文


PHP PhabricatorRepository::getLocalPath方法代码示例

本文整理汇总了PHP中PhabricatorRepository::getLocalPath方法的典型用法代码示例。如果您正苦于以下问题:PHP PhabricatorRepository::getLocalPath方法的具体用法?PHP PhabricatorRepository::getLocalPath怎么用?PHP PhabricatorRepository::getLocalPath使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PhabricatorRepository的用法示例。


在下文中一共展示了PhabricatorRepository::getLocalPath方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: pushToHgRepository

 private function pushToHgRepository(PhabricatorRepository $proxy)
 {
     $future = $proxy->getRemoteCommandFuture('push --verbose --rev tip -- %P', $proxy->getRemoteURIEnvelope());
     try {
         $future->setCWD($proxy->getLocalPath())->resolvex();
     } catch (CommandException $ex) {
         if (preg_match('/no changes found/', $ex->getStdOut())) {
             // mercurial says nothing changed, but that's good
         } else {
             throw $ex;
         }
     }
 }
开发者ID:patelhardik,项目名称:phabricator,代码行数:13,代码来源:PhabricatorRepositoryMirrorEngine.php

示例2: verifyGitOrigin

 /**
  * 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;
     }
     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(), $remote_uri, $expect_remote);
                 throw new Exception($message);
             }
         }
     }
 }
开发者ID:rchicoli,项目名称:phabricator,代码行数:61,代码来源:PhabricatorRepositoryEngine.php

示例3: getCleanMercurialWorkspace

 /**
  * Creates and/or cleans a workspace for the requested repo.
  *
  * return ArcanistMercurialAPI
  */
 public static function getCleanMercurialWorkspace(PhabricatorRepository $repo)
 {
     $origin_path = $repo->getLocalPath();
     $path = rtrim($origin_path, '/');
     $path = $path . '__workspace';
     if (!Filesystem::pathExists($path)) {
         $repo->execxLocalCommand('clone -- file://%s %s', $origin_path, $path);
     }
     $workspace = new ArcanistMercurialAPI($path);
     $workspace->execxLocal('pull');
     $workspace->execxLocal('update --clean default');
     $workspace->reloadWorkingCopy();
     return $workspace;
 }
开发者ID:denghp,项目名称:phabricator,代码行数:19,代码来源:DifferentialGetWorkingCopy.php

示例4: pushToHgRepository

 private function pushToHgRepository(PhabricatorRepository $repository, PhabricatorRepositoryURI $mirror_uri)
 {
     $argv = array('push --verbose --rev tip -- %P', $mirror_uri->getURIEnvelope());
     $future = $mirror_uri->newCommandEngine()->setArgv($argv)->newFuture();
     try {
         $future->setCWD($repository->getLocalPath())->resolvex();
     } catch (CommandException $ex) {
         if (preg_match('/no changes found/', $ex->getStdOut())) {
             // mercurial says nothing changed, but that's good
         } else {
             throw $ex;
         }
     }
 }
开发者ID:rchicoli,项目名称:phabricator,代码行数:14,代码来源:PhabricatorRepositoryMirrorEngine.php

示例5: serveMercurialRequest

 private function serveMercurialRequest(PhabricatorRepository $repository, PhabricatorUser $viewer)
 {
     $request = $this->getRequest();
     $bin = Filesystem::resolveBinary('hg');
     if (!$bin) {
         throw new Exception(pht('Unable to find `%s` in %s!', 'hg', '$PATH'));
     }
     $env = $this->getCommonEnvironment($viewer);
     $input = PhabricatorStartup::getRawInput();
     $cmd = $request->getStr('cmd');
     $args = $this->getMercurialArguments();
     $args = $this->formatMercurialArguments($cmd, $args);
     if (strlen($input)) {
         $input = strlen($input) . "\n" . $input . "0\n";
     }
     $command = csprintf('%s serve --stdio', $bin);
     $command = PhabricatorDaemon::sudoCommandAsDaemonUser($command);
     list($err, $stdout, $stderr) = id(new ExecFuture('%C', $command))->setEnv($env, true)->setCWD($repository->getLocalPath())->write("{$cmd}\n{$args}{$input}")->resolve();
     if ($err) {
         return new PhabricatorVCSResponse(500, pht('Error %d: %s', $err, $stderr));
     }
     if ($cmd == 'getbundle' || $cmd == 'changegroup' || $cmd == 'changegroupsubset') {
         // We're not completely sure that "changegroup" and "changegroupsubset"
         // actually work, they're for very old Mercurial.
         $body = gzcompress($stdout);
     } else {
         if ($cmd == 'unbundle') {
             // This includes diagnostic information and anything echoed by commit
             // hooks. We ignore `stdout` since it just has protocol garbage, and
             // substitute `stderr`.
             $body = strlen($stderr) . "\n" . $stderr;
         } else {
             list($length, $body) = explode("\n", $stdout, 2);
             if ($cmd == 'capabilities') {
                 $body = DiffusionMercurialWireProtocol::filterBundle2Capability($body);
             }
         }
     }
     return id(new DiffusionMercurialResponse())->setContent($body);
 }
开发者ID:bigboi900,项目名称:phabricator,代码行数:40,代码来源:DiffusionServeController.php

示例6: buildRepositoryStatus


//.........这里部分代码省略.........
                         break;
                     }
                 }
                 if (!$in_path) {
                     $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_WARNING, 'red')->setTarget(pht('Missing Binary %s', phutil_tag('tt', array(), $binary)))->setNote(pht('Unable to find this binary in `%s`. ' . 'You need to configure %s and include %s.', 'environment.append-paths', $this->getEnvConfigLink(), $path)));
                 }
             }
         }
     }
     $doc_href = PhabricatorEnv::getDocLink('Managing Daemons with phd');
     $daemon_instructions = pht('Use %s to start daemons. See %s.', phutil_tag('tt', array(), 'bin/phd start'), phutil_tag('a', array('href' => $doc_href), pht('Managing Daemons with phd')));
     $pull_daemon = id(new PhabricatorDaemonLogQuery())->setViewer(PhabricatorUser::getOmnipotentUser())->withStatus(PhabricatorDaemonLogQuery::STATUS_ALIVE)->withDaemonClasses(array('PhabricatorRepositoryPullLocalDaemon'))->setLimit(1)->execute();
     if ($pull_daemon) {
         // TODO: In a cluster environment, we need a daemon on this repository's
         // host, specifically, and we aren't checking for that right now. This
         // is a reasonable proxy for things being more-or-less correctly set up,
         // though.
         $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_ACCEPT, 'green')->setTarget(pht('Pull Daemon Running')));
     } else {
         $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_WARNING, 'red')->setTarget(pht('Pull Daemon Not Running'))->setNote($daemon_instructions));
     }
     $task_daemon = id(new PhabricatorDaemonLogQuery())->setViewer(PhabricatorUser::getOmnipotentUser())->withStatus(PhabricatorDaemonLogQuery::STATUS_ALIVE)->withDaemonClasses(array('PhabricatorTaskmasterDaemon'))->setLimit(1)->execute();
     if ($task_daemon) {
         $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_ACCEPT, 'green')->setTarget(pht('Task Daemon Running')));
     } else {
         $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_WARNING, 'red')->setTarget(pht('Task Daemon Not Running'))->setNote($daemon_instructions));
     }
     if ($is_cluster) {
         // Just omit this status check for now in cluster environments. We
         // could make a service call and pull it from the repository host
         // eventually.
     } else {
         if ($repository->usesLocalWorkingCopy()) {
             $local_parent = dirname($repository->getLocalPath());
             if (Filesystem::pathExists($local_parent)) {
                 $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_ACCEPT, 'green')->setTarget(pht('Storage Directory OK'))->setNote(phutil_tag('tt', array(), $local_parent)));
             } else {
                 $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_WARNING, 'red')->setTarget(pht('No Storage Directory'))->setNote(pht('Storage directory %s does not exist, or is not readable by ' . 'the webserver. Create this directory or make it readable.', phutil_tag('tt', array(), $local_parent))));
                 return $view;
             }
             $local_path = $repository->getLocalPath();
             $message = idx($messages, PhabricatorRepositoryStatusMessage::TYPE_INIT);
             if ($message) {
                 switch ($message->getStatusCode()) {
                     case PhabricatorRepositoryStatusMessage::CODE_ERROR:
                         $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_WARNING, 'red')->setTarget(pht('Initialization Error'))->setNote($message->getParameter('message')));
                         return $view;
                     case PhabricatorRepositoryStatusMessage::CODE_OKAY:
                         if (Filesystem::pathExists($local_path)) {
                             $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_ACCEPT, 'green')->setTarget(pht('Working Copy OK'))->setNote(phutil_tag('tt', array(), $local_path)));
                         } else {
                             $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_WARNING, 'red')->setTarget(pht('Working Copy Error'))->setNote(pht('Working copy %s has been deleted, or is not ' . 'readable by the webserver. Make this directory ' . 'readable. If it has been deleted, the daemons should ' . 'restore it automatically.', phutil_tag('tt', array(), $local_path))));
                             return $view;
                         }
                         break;
                     case PhabricatorRepositoryStatusMessage::CODE_WORKING:
                         $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_CLOCK, 'green')->setTarget(pht('Initializing Working Copy'))->setNote(pht('Daemons are initializing the working copy.')));
                         return $view;
                     default:
                         $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_WARNING, 'red')->setTarget(pht('Unknown Init Status'))->setNote($message->getStatusCode()));
                         return $view;
                 }
             } else {
                 $view->addItem(id(new PHUIStatusItemView())->setIcon(PHUIStatusItemView::ICON_CLOCK, 'orange')->setTarget(pht('No Working Copy Yet'))->setNote(pht('Waiting for daemons to build a working copy.')));
                 return $view;
             }
开发者ID:patelhardik,项目名称:phabricator,代码行数:67,代码来源:DiffusionRepositoryEditMainController.php

示例7: executeGitDiscover

 /**
  * @task git
  */
 private function executeGitDiscover(PhabricatorRepository $repository)
 {
     list($remotes) = $repository->execxLocalCommand('remote show -n origin');
     $matches = null;
     if (!preg_match('/^\\s*Fetch URL:\\s*(.*?)\\s*$/m', $remotes, $matches)) {
         throw new Exception("Expected 'Fetch URL' in 'git remote show -n origin'.");
     }
     self::executeGitVerifySameOrigin($matches[1], $repository->getRemoteURI(), $repository->getLocalPath());
     list($stdout) = $repository->execxLocalCommand('branch -r --verbose --no-abbrev');
     $branches = DiffusionGitBranchQuery::parseGitRemoteBranchOutput($stdout, $only_this_remote = DiffusionBranchInformation::DEFAULT_GIT_REMOTE);
     $callsign = $repository->getCallsign();
     $tracked_something = false;
     $this->log("Discovering commits in repository '{$callsign}'...");
     foreach ($branches as $name => $commit) {
         $this->log("Examining branch '{$name}', at {$commit}.");
         if (!$repository->shouldTrackBranch($name)) {
             $this->log("Skipping, branch is untracked.");
             continue;
         }
         $tracked_something = true;
         if ($this->isKnownCommit($repository, $commit)) {
             $this->log("Skipping, HEAD is known.");
             continue;
         }
         $this->log("Looking for new commits.");
         $this->executeGitDiscoverCommit($repository, $commit, $name, false);
     }
     if (!$tracked_something) {
         $repo_name = $repository->getName();
         $repo_callsign = $repository->getCallsign();
         throw new Exception("Repository r{$repo_callsign} '{$repo_name}' has no tracked branches! " . "Verify that your branch filtering settings are correct.");
     }
     $this->log("Discovering commits on autoclose branches...");
     foreach ($branches as $name => $commit) {
         $this->log("Examining branch '{$name}', at {$commit}'.");
         if (!$repository->shouldTrackBranch($name)) {
             $this->log("Skipping, branch is untracked.");
             continue;
         }
         if (!$repository->shouldAutocloseBranch($name)) {
             $this->log("Skipping, branch is not autoclose.");
             continue;
         }
         if ($this->isKnownCommitOnAnyAutocloseBranch($repository, $commit)) {
             $this->log("Skipping, commit is known on an autoclose branch.");
             continue;
         }
         $this->log("Looking for new autoclose commits.");
         $this->executeGitDiscoverCommit($repository, $commit, $name, true);
     }
 }
开发者ID:nexeck,项目名称:phabricator,代码行数:54,代码来源:PhabricatorRepositoryPullLocalDaemon.php


注:本文中的PhabricatorRepository::getLocalPath方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。