mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-10 00:42:40 +01:00
Fix an issue in Subversion with a root working copy which is actually a symlink.
Summary: lol svn lol Test Plan: Reviewers: CC:
This commit is contained in:
parent
b7ccb78ece
commit
e508504ddf
1 changed files with 27 additions and 7 deletions
|
@ -161,13 +161,33 @@ class ArcanistSubversionAPI extends ArcanistRepositoryAPI {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildInfoFuture($path) {
|
public function buildInfoFuture($path) {
|
||||||
// Note: here and elsewhere we need to append "@" to the path because if
|
if ($path == '/') {
|
||||||
// a file has a literal "@" in it, everything after that will be
|
// When the root of a working copy is referenced by a symlink and you
|
||||||
// interpreted as a revision. By appending "@" with no argument, SVN
|
// execute 'svn info' on that symlink, svn fails. This is a longstanding
|
||||||
// parses it properly.
|
// bug in svn:
|
||||||
return new ExecFuture(
|
//
|
||||||
'svn info %s@',
|
// See http://subversion.tigris.org/issues/show_bug.cgi?id=2305
|
||||||
$this->getPath($path));
|
//
|
||||||
|
// To reproduce, do:
|
||||||
|
//
|
||||||
|
// $ ln -s working_copy working_link
|
||||||
|
// $ svn info working_copy # ok
|
||||||
|
// $ svn info working_link # fails
|
||||||
|
//
|
||||||
|
// Work around this by cd-ing into the directory before executing
|
||||||
|
// 'svn info'.
|
||||||
|
return new ExecFuture(
|
||||||
|
'(cd %s && svn info .)',
|
||||||
|
$this->getPath());
|
||||||
|
} else {
|
||||||
|
// Note: here and elsewhere we need to append "@" to the path because if
|
||||||
|
// a file has a literal "@" in it, everything after that will be
|
||||||
|
// interpreted as a revision. By appending "@" with no argument, SVN
|
||||||
|
// parses it properly.
|
||||||
|
return new ExecFuture(
|
||||||
|
'svn info %s@',
|
||||||
|
$this->getPath($path));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildDiffFuture($path) {
|
public function buildDiffFuture($path) {
|
||||||
|
|
Loading…
Reference in a new issue