1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-22 06:42:41 +01:00

Use phutil_passthru() in "arc commit" instead of passthru().

Summary:
passthru() doesn't show up on --trace, and one time a while ago someone had an
issue which was harder than necessary to debug because the command wasn't
avialable in the log. Use the logged version.

Also fix a locale issue I ran into on my local machine, with "en_US.utf8" not
being a valid locale.

Test Plan:
Created an SVN repo and used "arc commit" to make commits against it.

Reviewed By: jungejason
Reviewers: jungejason, tuomaspelkonen, aran
CC: aran, epriestley, jungejason
Differential Revision: 306
This commit is contained in:
epriestley 2011-05-18 10:32:00 -07:00
parent 399c505f1a
commit 292c995d57
2 changed files with 30 additions and 3 deletions

View file

@ -116,13 +116,14 @@ EOTEXT
$message = escapeshellarg($message); $message = escapeshellarg($message);
$root = escapeshellarg($repository_api->getPath()); $root = escapeshellarg($repository_api->getPath());
$lang = $this->getSVNLangEnvVar();
// Specify LANG explicitly so that UTF-8 commit messages don't break // Specify LANG explicitly so that UTF-8 commit messages don't break
// subversion. // subversion.
$command = $command =
"(cd {$root} && LANG=en_US.utf8 svn commit {$files} -m {$message})"; "(cd {$root} && LANG={$lang} svn commit {$files} -m {$message})";
$err = null; $err = phutil_passthru('%C', $command);
passthru($command, $err);
if ($err) { if ($err) {
throw new Exception("Executing 'svn commit' failed!"); throw new Exception("Executing 'svn commit' failed!");
@ -258,4 +259,29 @@ EOTEXT
return array('svn'); return array('svn');
} }
/**
* On some systems, we need to specify "en_US.UTF-8" instead of "en_US.utf8",
* and SVN spews some bewildering warnings if we don't:
*
* svn: warning: cannot set LC_CTYPE locale
* svn: warning: environment variable LANG is en_US.utf8
* svn: warning: please check that your locale name is correct
*
* For example, is happens on my 10.6.7 machine with Subversion 1.6.15.
*/
private function getSVNLangEnvVar() {
$locale = 'en_US.utf8';
try {
list($locales) = execx('locale -a');
$locales = explode("\n", trim($locales));
$locales = array_fill_keys($locales, true);
if (isset($locales['en_US.UTF-8'])) {
$locale = 'en_US.UTF-8';
}
} catch (Exception $ex) {
// Ignore.
}
return $locale;
}
} }

View file

@ -13,6 +13,7 @@ phutil_require_module('arcanist', 'workflow/base');
phutil_require_module('phutil', 'console'); phutil_require_module('phutil', 'console');
phutil_require_module('phutil', 'filesystem'); phutil_require_module('phutil', 'filesystem');
phutil_require_module('phutil', 'future/exec');
phutil_require_module('phutil', 'utils'); phutil_require_module('phutil', 'utils');