protected function initializeFromAphrontRequestDictionary(array $data)
 {
     parent::initializeFromAphrontRequestDictionary($data);
     if (!strncmp($this->path, ':', 1)) {
         $this->path = substr($this->path, 1);
         $this->path = ltrim($this->path, '/');
     }
 }
 protected function initializeFromAphrontRequestDictionary(array $data)
 {
     parent::initializeFromAphrontRequestDictionary($data);
     if ($this->path === null) {
         $subpath = $this->repository->getDetail('svn-subpath');
         if ($subpath) {
             $this->path = $subpath;
         }
     }
     if (!strncmp($this->path, ':', 1)) {
         $this->path = substr($this->path, 1);
         $this->path = ltrim($this->path, '/');
     }
 }
 protected function initializeFromAphrontRequestDictionary(array $data)
 {
     parent::initializeFromAphrontRequestDictionary($data);
     $path = $this->path;
     $parts = explode('/', $path);
     $branch = array_shift($parts);
     if ($branch != ':') {
         $this->branch = $this->decodeBranchName($branch);
     }
     foreach ($parts as $key => $part) {
         if ($part == '..') {
             unset($parts[$key]);
         }
     }
     $this->path = implode('/', $parts);
 }
 protected function initializeFromAphrontRequestDictionary(array $data)
 {
     parent::initializeFromAphrontRequestDictionary($data);
     $path = $this->path;
     $parts = explode('/', $path);
     $branch = array_shift($parts);
     if ($branch != ':') {
         $this->branch = $this->decodeBranchName($branch);
     }
     foreach ($parts as $key => $part) {
         // Prevent any hyjinx since we're ultimately shipping this to the
         // filesystem under a lot of git workflows.
         if ($part == '..') {
             unset($parts[$key]);
         }
     }
     $this->path = implode('/', $parts);
     if ($this->repository) {
         $repository = $this->repository;
         // TODO: This is not terribly efficient and does not produce terribly
         // good error messages, but it seems better to put error handling code
         // here than to try to do it in every query.
         $branch = $this->getBranch();
         // TODO: Here, particularly, we should give the user a specific error
         // message to indicate whether they've typed in some bogus branch and/or
         // followed a bad link, or misconfigured the default branch in the
         // Repository tool.
         list($this->stableCommitName) = $repository->execxLocalCommand('rev-parse --verify %s/%s', DiffusionBranchInformation::DEFAULT_GIT_REMOTE, $branch);
         if ($this->commit) {
             list($commit) = $repository->execxLocalCommand('rev-parse --verify %s', $this->commit);
             // Beyond verifying them, expand commit short forms to full 40-character
             // hashes.
             $this->commit = trim($commit);
             // If we have a commit, overwrite the branch commit with the more
             // specific commit.
             $this->stableCommitName = $this->commit;
             /*
             
               TODO: Unclear if this is actually a good idea or not; it breaks commit views
               at the very least.
             
                     list($contains) = $repository->execxLocalCommand(
                       'branch --contains %s',
                       $this->commit);
                     $contains = array_filter(explode("\n", $contains));
                     $found = false;
                     foreach ($contains as $containing_branch) {
                       $containing_branch = trim($containing_branch, "* \n");
                       if ($containing_branch == $branch) {
                         $found = true;
                         break;
                       }
                     }
                     if (!$found) {
                       throw new Exception(
                         "Commit does not exist on this branch!");
                     }
             */
         }
     }
 }