Commit Graph

180 Commits (bf3dd5a8dbe934f7a424220da36b26481e7c9676)

Author SHA1 Message Date
xusydoc@chromium.org 2fd6c3fcb7 Kill subprocesses on KeyboardInterrupt.
SVN traps SIGINT and attempts to clean itself up, but this results in hangs
waiting for TCP. This patch does two things: daemonizes worker threads so they
are culled when the main thread dies (is ctrl-C'd) and keeps track of spawned
subprocesses to kill any remaining ones when the main program is ctrl-C'd.

A user ctrl-C'ing gclient has to manually terminate hung SVN processes, so this
introduces no extra data loss or hazard. stracing a hung SVN process shows that
it is indeed hanging on TCP reads after receiving a SIGINT, implying there is an
underlying but in the SVN binary.

Review URL: https://chromiumcodereview.appspot.com/14759006

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@198205 0039d316-1c4b-4281-b951-d872f2087c98
12 years ago
jbroman@chromium.org 615a262dcb Make git-cl more accurately imitate git's editor selection process, and respect $VISUAL.
It is somewhat surprising when git-cl, which acts as a git subcommand, launches
a different editor. In particular, git has a config option (core.editor) which
specifies the editor that should be used. Since we already respect $GIT_EDITOR,
it makes sense for git-cl to respect core.editor and $VISUAL as well.

R=maruel@chromium.org
BUG=237504

Review URL: https://chromiumcodereview.appspot.com/14854003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@198101 0039d316-1c4b-4281-b951-d872f2087c98
12 years ago
digit@chromium.org dc112ac587 Remove gclient_utils.RemoveDirectory().
The 'RemoveDirectory()' function in gclient_utils is deprecated and
rmtree() should be used instead for consistency.

This patch modifies all clients in depot_tools to use rmtree() instead
and removes the RemoveDirectory function.

+ The SVNWrapperTestCase.testRevertNoDotSvn() mocking
  expectation has been slightly changed. This was required
  because the test invokes code that used to call
  gclient_utils.RemoveDirectory() directly, while only
  gclient_utils.rmtree() was mocked.

BUG=NONE
R=maruel@chromium.org, ilevy@chromium.org
TEST=manually run gclient_utils_test / gclient_smoketest / scm_unittest / gclient_scm_test

Review URL: https://chromiumcodereview.appspot.com/14134010

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@196133 0039d316-1c4b-4281-b951-d872f2087c98
12 years ago
borenet@google.com 6b4a2ab6ad Use rd on Windows in rmdir
This is needed because the current implementation commonly fails on Windows due to "directory not empty" errors.  Using rd is more reliable.

Review URL: https://chromiumcodereview.appspot.com/13581005

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@194932 0039d316-1c4b-4281-b951-d872f2087c98
12 years ago
ilevy@chromium.org f2ed3fb1f0 Add gclient grep for git repos
- Adds a gclient grep command to search through git repos.

BUG=157950


Review URL: https://chromiumcodereview.appspot.com/11312116

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@167007 0039d316-1c4b-4281-b951-d872f2087c98
12 years ago
ilevy@chromium.org 1369150868 Make gclient sync use cpu count for default jobs
- On high core, fast machines, jobs=8 is does not offer good
  parallelization.  Switch to use number of local cpus.

R=maruel@chromium.org
BUG=


Review URL: https://chromiumcodereview.appspot.com/11140019

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@162072 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
jam@chromium.org 07d44398a2 Switch gcl/git upload to use https://codereview.chromium.org instead of https://chromiumcodereview.appspot.com. It's been a week since the SSL certificate got added, and the old DNS records had a TTL of 7 days.
Review URL: https://chromiumcodereview.appspot.com/10910225

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@156316 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
chrisha@chromium.org 2b99d43032 Handle non-UTF-8 encoded files in presubmit checks.
BUG=
TEST=


Review URL: https://chromiumcodereview.appspot.com/10696202

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@146391 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
maruel@chromium.org c3cd537819 Improve comment added in r145396.
R=cmp@chromium.org
BUG=
TEST=


Review URL: https://chromiumcodereview.appspot.com/10736011

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@146136 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
maruel@chromium.org 51e84fba7d The previous fix r145315 seems to have broken python 2.6.2 on Windows users.
Since open() and codecs.open() have different behavior, and codecs.open()
misbehaves on python 2.6, switch to open() with manual str decoding.

TBR=cmp@chromium.org
BUG=
TEST=I failed to reproduce, it's a shot in the dark


Review URL: https://chromiumcodereview.appspot.com/10698089

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@145396 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
maruel@chromium.org 8a066dc684 Fix difference on behavior on python 2.6 on linux with open(mode='rU').
TBR=cmp@chromium.org
BUG=
TEST=manually tested gclient sync works on linux with python 2.6


Review URL: https://chromiumcodereview.appspot.com/10694069

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@145315 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
maruel@chromium.org dae209fb46 Enforce utf-8 codec on all files read and write.
Otherwise, the files are opened in 'whatever happens to be the current encoding'
which is highly system-dependent. Even if some files are not encoded with utf-8,
the status quo is even worse. So it's worth trying out.

TBR=cmp@chromium.org
BUG=
TEST=


Review URL: https://chromiumcodereview.appspot.com/10697036

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@145306 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
maruel@chromium.org 2a0108ebdb Revert r132446 "Check the existence and executability of scm commands"
This completely broke syncing on Windows.

TBR=mukai@chromium.org
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9956149

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@132451 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
mukai@chromium.org d15a8fa135 Check the existence and executability of scm commands
BUG=114483
TEST=manually

Review URL: http://codereview.chromium.org/10034011

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@132446 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
maruel@chromium.org eb5edbcfde Add UpgradeToHttps() to reliably and forcibly upgrade all urls to https.
Enable it for git-cl and gcl.

R=nsylvain@chromium.org
BUG=107838
TEST=New connections go through https://


Review URL: http://codereview.chromium.org/9214004

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@117857 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
maruel@chromium.org 99ac1c5808 Dedupe codereview.settings parsing code. Add more testing.
So any modification to the defaults is coded at only one place.

TBR=nsylvain@chromium.org
BUG=107838
TEST=


Review URL: http://codereview.chromium.org/9214002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@117853 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
asvitkine@chromium.org 0eff22d6c0 Clarify error message in GCL.
BUG=none
TEST=none

Review URL: http://codereview.chromium.org/8395005

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@107129 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 0e0436a662 Move code starting the editor into a common function.
Windows users wouldn't get the same behavior on git cl vs gcl.
Improve automatic CRLF<->LF conversion, some gcl users would be \n repeated in
their description depending on the editor used.

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/8360007

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@107106 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 042f0e73de Improve the sys.stdout proxy to be more transparent.
Otherwise isatty() could not be proxied correctly.

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/8370004

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@106864 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 6c48a304d4 Fix a concurrency issue happening with deep dependencies when the intermediary
directory doesn't exist, on fresh checkout and --jobs >1.

It happens in the case where there is 3 dependencies:
a
a/b/c/d
a/b/c/e

'a' is processed first. Then 'a/b/c/d' and 'a/b/c/e' are fired simultaneously.
If both are not present, both svn checkout tries to mkdir b and b/c and a race
condition occurs between their call for isdir() and mkdir().

This works around the issue by creating the intermediary directories ourself
before calling out svn and managing the error ourself.

TBR=dpranke@chromium.org
BUG=
TEST=fresh checkout shouldn't be flaky


Review URL: http://codereview.chromium.org/8359018

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@106636 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 4901daf1a7 Workaround a limitation in cygwin with Lock creation.
Reuse a common lock to reduce the number of locks created. Poor cygwin users.

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/8353010

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@106494 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 93a9ee0f72 gclient would crash when .gclient is not found.
Fix a problem introduced in r105229.

R=cmp@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/8349001

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@106089 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
rcui@google.com 13595ffa41 Add repo-managed checkout support to trychange.py
BUG=chromium-os:21286
TEST=Ran 'git-try' with/without --root=src, and with/without .gclient file

Review URL: http://codereview.chromium.org/8174009

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@105229 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 6f6ad13644 Work around lock failure on cygwin.
This is really bad but the lock is never held for a long time so it 'should' work.

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/8253008

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@105195 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 470b543fcf Stop modifiying requirements out of thread and generate it instead.
This fixes GClientSmokeBoth.testMultiSolutionsJobs flakiness by having
consistent ordering.

Now no out of thread modification is ever done, which result in much saner code.

R=dpranke@chromium.org
BUG=60725
TEST=tested manually with gclient sync --jobs 100 on chrome and with
gclient_smotetest.py


Review URL: http://codereview.chromium.org/8174014

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@104920 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
szager@google.com 85d3e3adbc Restore 103787 (fix git progress message), and update test expectations.
Review URL: http://codereview.chromium.org/8161009

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@104504 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org a91d26de47 Force requirements modification to be locked.
... On my quest to make that stuff thread safe.

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/8135008

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@104033 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 1333cb3edb Improve logging and ease debugging.
While trying to fix all the multithreading issues...

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/8135007

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@104026 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
szager@google.com 43ea9d727b Reverting 103787
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@103935 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
szager@google.com 7f61350080 http://codereview.chromium.org/8052025/
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@103787 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 6ca8bf80b4 Retry "Initial step into making Dependency thread safe""
I had forgot one access to _requirements. Now that tests are run, this change is
safer to commit.

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/7909012

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@101856 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org adcf5b702d Revert "Initial step into making Dependency thread safe"
Broke the tree. :(

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@101136 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 89d51c245c Initial step into making Dependency thread safe
R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/7892034

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@101135 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 109cb9d31f Print diagnosis message when a task is Ctrl-C'ed out
R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/7891058

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@101133 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org f36c0ee520 Add diagnostics if an item is run multiple times
R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/7885032

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@101117 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 485dcab61e Fix the case where a dep not processed could be set as a requirement.
This would result in a hang during gclient sync.

Includes regression test.

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/7885008

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@101070 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 57bf78d82a Update docstrings w.r.t. subprocess2.
No code change.

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/7858001

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@100212 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org a82a8ee4ec Remove CheckCall, CheckCallError and Popen from gclient_utils.
R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/7846003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@100203 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org ca0f839801 Make gclient_utils.CheckCallError inherit from subprocess2.CalledProcessError.
This will simply the transition

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/7839038

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@100174 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
nsylvain@google.com e939bb5de3 Remove empty lines from the output while using --jobs.
While using --jobs, empty lines are adding a lot of noise.

An example output would look like:

>gclient sync --jobs=10
1>
3>
4>
6>
5>
7>
5>
5>________ running 'git clone ...'
Review URL: http://codereview.chromium.org/7101012

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@87542 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
floitsch@google.com eaab784bcf Add --transitive flag.
When specifying a revision (with -r) propagates the date of the revision to its children.

Review URL: http://codereview.chromium.org/6873110

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@83313 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org ff3e4a87b1 Fix constructor arguments to OSError.
R=dpranke@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/6897034

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@82763 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org ade9c5953d Fix case where wc_info is not present.
Reapply r80770 "Switch from xml.dom.minidom to xml.etree".

TBR=dpranke@chromium.org
BUG=
TEST=

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@80785 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org d25fb8f68b Revert r80770 "Switch from xml.dom.minidom to xml.etree"
Throws exceptions on mac.

R=dpranke@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/6811020

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@80771 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 949d1a6a9e Switch from xml.dom.minidom to xml.etree
The reason of this change (beside deleting 30 lines) is to fix pylint on Mac.
For an unknown reason, it was dying here trying to process the minidom import.

R=dpranke@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/6799021

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@80770 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 58ef297bc5 Revert r80216 "Reapply r79779: "Removed gclient_utils.Popen() and use subprocess2's ...""
Horked windows slaves this time.

R=dpranke@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/6689023

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@80220 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 93ef410768 Reapply r79779: "Removed gclient_utils.Popen() and use subprocess2's version instead."
It should be fine now that I've fixed python2.5 compatilibity issues in subprocess2.py.

R=dpranke@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/6759074

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@80216 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 5a376ed328 Revert r79779: "Removed gclient_utils.Popen() and use subprocess2's version instead."
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@79781 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 242549409f Removed gclient_utils.Popen() and use subprocess2's version instead.
R=dpranke@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/6770028

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@79779 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
dpranke@chromium.org 20254fc742 Revert r79002 - bug processing reviewer lists
TBR=maruel@chromium.org

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@79005 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
dpranke@chromium.org 0c20c2fc23 The parsing of change descriptions had a lot of overlap and inconsistencies between gcl and git-cl. In particular, we weren't handling TBR= consistently, or probably a few other things.
This change moves most of the code into presubmit_support and gclient_utils and just leaves the formatting differences for the messages between the two tools.

Review URL: http://codereview.chromium.org/6719004

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@79002 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
dpranke@chromium.org 97ae58eb0a Make git_cl (and everything else not skipped under depot_tools)
pass pylint cleanly.

There should be no functional changes in this patch, although there's at least one minor bug that lint caught.

Review URL: http://codereview.chromium.org/6685023

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@78638 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 1edee69142 Fix win32api and win32con definition order.
It would fail on win32 when these modules are not present.

BUG=75902
TEST=none

R=mhm@chromium.org

Review URL: http://codereview.chromium.org/6683028

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@77947 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org f9040728dc Shorten RemoveDirectory and rename to rmtree. Remove rmtree from fake_repos.
Keep an alias to RemoveDirectory, will be removed in a later change.

TEST=new unit test to test this function
BUG=none

Review URL: http://codereview.chromium.org/6628032

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@77463 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 31f10a863c Remove unneeded logging.info() calls.
TBR=bradnelson
BUG=none
TEST=none

Review URL: http://codereview.chromium.org/6576042

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@75918 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
thakis@chromium.org 3487f7f45f Add more logging. Useful to understand `git try` slowness.
Review URL: http://codereview.chromium.org/6247008

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@71602 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 1bd1ed3cc6 Add more exception information to breakpad.
When an HTTP exception information is logged, no information is sent by
default. Add an helper function to manually extract interesting information
to append it to the exception type.

Also disable another pylint warning.

TEST=manual test
BUG=none

Review URL: http://codereview.chromium.org/5303002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@67306 0039d316-1c4b-4281-b951-d872f2087c98
14 years ago
maruel@chromium.org 0661727bdc Reduce the chances for gclient to throw an exception in subprocess module.
Python standard library is not thread safe. Work around it by leaking a bit.
The problem is particularly visible on python 2.4.

TEST=none
BUG=60623

Review URL: http://codereview.chromium.org/4465001

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@65048 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org b17b55beca Disable the remaining pylint warnings locally and enable pylint warnings in PRESUBMIT.
This causes some code clutter.

TEST=Increased pylint warning level
BUG=none

Review URL: http://codereview.chromium.org/4321006

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@64913 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org cb2985fb69 Largely reduce the number of pylint warnings and fix one typo.
Most of them are style issues or variable aliasing.

TEST=Can almost enable pylint warnings
BUG=none

Review URL: http://codereview.chromium.org/4360002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@64908 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 78b8cd14ef gclient can now handle git URLs containing "-" in usernames and "~" in paths.
Contributed by Torsten Becker <torsten.becker@gmail.com>

BUG=
TEST=gclient config 'ssh://user-name@asd.com/~/asd.git' && gclient sync  # fails in SplitUrlRevision

Review URL: http://codereview.chromium.org/4144002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@63877 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org ac61023c2c Fix a bug in gclient recurse for git-svn users. Make gclient_utils.CheckCall more versatile.
TEST=none
BUG=none

Review URL: http://codereview.chromium.org/3737001

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@62400 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 55a2eb8871 Display the name of the repository that is being updated.
Patch contributed by Anton Staaf.

BUG=None
TEST=run "gclient config ...; gclient sync chromium"

Review URL: http://codereview.chromium.org/3497013

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@61733 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 77e4ecaf59 Remove cruft from having to do bookeeping of options.stdout.
This makes the code saner to understand.

TEST=none
BUG=none

Review URL: http://codereview.chromium.org/3420014

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@60050 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 4ed3418912 Directly hook sys.stdout for thread annotated output.
In the next change, we can now remove all the options.stdout bookeeping since
it's not unnecessary.

TEST=none
BUG=none

Review URL: http://codereview.chromium.org/3398008

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@59795 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org e0de9cbe0f Remove the class StdoutAnnotated and clones the object instead.
The end goal is to remove options.stdout, to remove a lot of bookkeeping.

TEST=none
BUG=none

Review URL: http://codereview.chromium.org/3418014

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@59792 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 8aba5f7305 Add a nice message for cygwin users, telling them to rebase when necessary.
BUG=53483
TEST=none

Review URL: http://codereview.chromium.org/3435010

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@59699 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org acc4567100 Enable parallel checkout by default to --jobs=8 and smoke tests.
BUG=54084
TEST=updated smoke test and added a new one + stdout untangling

Review URL: http://codereview.chromium.org/3357020

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@59002 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org cb1e97a1a2 Enable annotated output for --jobs N!=1.
TEST=none
BUG=54084

Review URL: http://codereview.chromium.org/3347019

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58985 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 3742c84587 Add the infrastructure necessary to support annotated stdout.
Simplify ExecutionQueue.run() by moving code into utility functions.

Reduce the amount of code in WorkerThread.run() to improve reliability.

Don't trap exceptions in single-threaded usage!

BUG=54084
TEST=none

Review URL: http://codereview.chromium.org/3336015

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58974 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org ad80e3b96e Simplify GIT.Capture() code to always redirect stderr by default and always throw an exception on failure.
Make gclient_scm_test silent.

Replace raise Exception() with raise gclient_utils.Error().

BUG=54084
TEST=none

Review URL: http://codereview.chromium.org/3353018

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58936 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 9c53126dd6 Enter a description of the change.
Add back support for python 2.4.

Looks like a few slaves haven't been updated yet.

TBR=bradnelson
BUG=none
TEST=none

Review URL: http://codereview.chromium.org/3338017

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58820 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org db111f71cf Add automatic auto-flushing stdout.
An automated work around for python lack of stdout flushing.
This design simplifies life once parallel checkout is enabled.

TEST=none
BUG=none

Review URL: http://codereview.chromium.org/3342024

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58819 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
jochen@chromium.org 20760a543c Do not blindly assume that a .gclient file in a parent directory belongs to the current directory.
BUG=54238
TEST=gclient_smoketest.py
Review URL: http://codereview.chromium.org/3342020

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58800 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 7b194c1a05 Improve exception handling.
BUG=none
TEST=none

Review URL: http://codereview.chromium.org/3320012

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58756 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 66c83e68b7 Rename retcode to returncode to be consistent with subprocess.
Change CheckCallError to inherit from Error. This will simplify try/except changes.

TEST=none
BUG=none

Review URL: http://codereview.chromium.org/3324007

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58695 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org a1693bef5a Remove kwargs copy, it is not necessary. Remove ordered argument support from popen to simplify it.
Move logging call to the base function.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/3300008

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58523 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 17d01795a6 Cleanup the code in gclient_utils to standardize on CheckCall nomenclature.
Simplify code by removing fail_status
Rename print_messages to always
Simplify the doc.

Review URL: http://codereview.chromium.org/3104036

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58201 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 2b9aa8e0b3 Refactor SubprocessCallAndFilter() to remove positional arguments.
This way the function is much more similar to subprocess.call(). Further changes
will be done, to be able to convert all the function, to be able to parallelize
output without corrupting it.

Used pylint to verify call graph correctness, causing some other unrelated
changes.

TEST=unit tests
BUG=none

Review URL: http://codereview.chromium.org/3117039

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@57369 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 559c3f89b6 Add stdout param to SubprocessCallAndFilter().
It will eventually replace 'print_messages' and be used to annotate printed
lines when using --jobs.

Review URL: http://codereview.chromium.org/3174020

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@57092 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 3a292688b6 Redo of r56893 with fix to support python 2.5.
Original Description:

Remove code duplication and improve style.

Create a Popen function to reduce code duplication.
Use RemoveDirectory where relevant.
Make drover slightly more posix friendly.

Review URL: http://codereview.chromium.org/3199011

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@57083 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org a488c7d7bf Fix for files not ending with \n, otherwise the last line would be ignored.
TBR=bradnelson

Review URL: http://codereview.chromium.org/3110030

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@57010 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org ad0b13da3d Revert "Remove code duplication and improve style."
This reverts commit 850ee065dd.

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@56894 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 850ee065dd Remove code duplication and improve style.
Create a Popen function to reduce code duplication.
Use RemoveDirectory where relevant.
Make drover slightly more posix friendly.

Review URL: http://codereview.chromium.org/3126020

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@56893 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org c41c27c86e Force LANGUAGE=en to fix svn output parsing
TEST=Run with LANGUAGE=fr_CA, gclient still works.

Review URL: http://codereview.chromium.org/3192001

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@56354 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
chase@chromium.org 8ad1cee657 Flush more often in gclient's SubprocessCallAndFilter.
Speed up flushing of output on platforms that may not
flush as often as we expect (like Windows).  Wait at
least 10s between flushes to avoid overloading busy
readers.

BUG=none
TEST=gclient flushes on Windows more often, regular
gclient operations continue to work as expected
Review URL: http://codereview.chromium.org/3140013

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@56217 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org c8d064b447 Add back stack location to gclient exceptions.
Needed to use the special 3 args raise notation.

Review URL: http://codereview.chromium.org/3164014

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@56209 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 9e5317ac38 Add --jobs support to gclient. --jobs=1 is still the default for now.
Huge thanks to piman@ for working on a patch. I chose a different design but he
gave me motivation and ideas. Sorry for not accepting his patch earlier, this
was mostly due to broken gclient implementation itself.

gclient can now run an unlimited number of parallel checkouts and always keep
the checkout coherency correct.

--jobs=1 is single threaded as before, albeit with a different code path.

Issues:
- Using --jobs with a value other than 1 will result in a mangled output.
- Exceptions thrown in a thread will be have the wrong stack trace.

TEST=gclient sync -j 99 in a ssh:// chromiumos checkout is dramatically faster.

---

Here's the perf on linux on i7-860 for a chromium checkout with warm cache. Cold
cache will result is significantly reduced improvements so this is best case
improvements. The sync was no-op all the time except where noted. All execution
where with "time gclient sync " + args. Didn't include 'sys' column since it was
statistically insignifiant and highly correlated with 'user'.

           runs with -f        runs with -m      without -f nor -m
 args          real    user      real    user      real    user
 -j 12       20.59s  18.00s     5.64s   7.95s     5.86s   8.10s
        #1 1m05.26s  20.02s     5.20s   7.94s     5.10s   8.09s
             22.79s  18.17s
 -j 1   #2 1m47.00s  16.72s     9.69s   5.72s    12.35s   5.96s
           1m31.28s  17.06s     9.54s   5.85s    10.51s   6.20s
           1m31.79s  16.39s
 before #3 1m30.94s  16.74s     9.77s   5.83s    10.45s   5.77s
           1m30.17s  17.30s    10.36s   5.68s    10.16s   5.88s
 hook #4      8.52s  7.93s
              8.73s  8.13s

#1 This particular run synched to r56023, a webkit roll updating layout tests.
   It's still faster than a no-op sync without parallel checkout.
#2 Maybe there was a sync or computer hickup, I didn't realize.
#3 This is depot_tools@56020
#4 Since -f implies runhooks, I ran the hook 'python src/build/gyp_chromium'
   manually to compare. Hooks are still run in a single thread. I didn't rest
   'gclient runhooks'.

I tried to go a ssh:// checkout of chromium os tree but it timed out everytime I
tried to sync so I couldn't get data points. I expect an order of magnitude of
improvement or more.

Review URL: http://codereview.chromium.org/3135014

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@56079 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 80cbe8b7d1 Move ExecutionQueue and WorkItem to gclient_utils.py
Review URL: http://codereview.chromium.org/3107009

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@56020 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org df2b31582f Reapply gclient.py refactor for the third time.
Bring some OOP and sanity to gclient.py.

- Changed the algorithm from breadth-first to depth-first.
- Added infinite recursion support.
- Fixed From() of From() dependency.
- Fixed cross solution custom deps aliasing.
- Removed support code for old .gclient_entries format.
- Removed IsGitCheckout() in favor for a direct check for .git presence.

TEST=all test pass

The main difference with r51760 is that new smoke tests have been added since which replicates how webkit checkouts with gclient.

Review URL: http://codereview.chromium.org/2917009

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@53205 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org dc7445dd70 Revert the refactor (r52005) again, it broke webkit checkout.
TBR=msb

Review URL: http://codereview.chromium.org/2973001

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@52011 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 917aa91750 Reapply r51760 and r51761 that were reverted in r51767.
Add the fix for FileImpl() plus unit tests.

TEST=more tests

Review URL: http://codereview.chromium.org/2808048

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@52005 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 5248d9dfe3 Revert both r51761 and r51760 as it broke the webkit slaves.
TBR=msb

Review URL: http://codereview.chromium.org/2886017

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@51767 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org adecb3162f Bring some OOP and sanity to gclient.py.
- Changed the algorithm from breadth-first to depth-first.
- Added infinite recursion support.
- Fixed From() of From() dependency.
- Fixed cross solution custom deps aliasing.
- Removed support code for old .gclient_entries format.
- Removed IsGitCheckout() in favor for a direct check for .git presence.

TEST=all test pass

Review URL: http://codereview.chromium.org/2867047

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@51760 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 5990f9d536 Give more simple message when a SyntaxError is thrown
TEST=none, no big deal. I'll get a breakpad report otherwise anyway. This is solely to *reduce* the number of breakpad stack trace that this is done.

Review URL: http://codereview.chromium.org/2885020

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@51739 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 9eda411072 Incremental changes towards more efficient refactoring of gclient.py
Fix gclient diff & pack to not throw uncatched exceptions when a directory is missing.

Reorder things in gclient.py for easier diff later
Update revinfo help
Add GetScmName(), it will be needed later.

TEST=unit tests
BUG=none

Review URL: http://codereview.chromium.org/2786013

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@49565 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 116704f20d Some preparation work towards the gclient.py refactor.
Switch "" usage to '' to please Brad. Didn't change gclient.py yet because it
will conflict with the refactor.

TEST=unit tests still pass.

Review URL: http://codereview.chromium.org/2769011

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@49545 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
maruel@chromium.org 6e29d572b5 Add pylintrc and fix style for many scripts.
Fix a bug in scm.SVN.DiffItem()

Reduce variable aliasing, fix alignments, etc.

Review URL: http://codereview.chromium.org/2673002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@48943 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
tony@chromium.org d2e925611f Revert r45652 and r45653. It broke the single file export
feature.

TBR=piman,jamesr
Review URL: http://codereview.chromium.org/1730014

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@45660 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago
piman@chromium.org 09fd102397 try/finally
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@45653 0039d316-1c4b-4281-b951-d872f2087c98
15 years ago