Reset the fetch config in the bots before each run.
If a ref is incorrectly set, it will affect later runs.
For example, [1] caused a bad refspec to be added to the fetch config,
(+refs/branch-heads/refs/branch-heads/6.7:refs/branch-heads/refs/branch-heads/6.7)
which affects all subsequent runs in the same bot: [2], [3].
This makes bot_update clear the fetch config before each run, so it is more
robust against these kind of failures.
[1] https://logs.chromium.org/v/?s=v8%2Fbuildbucket%2Fcr-buildbucket.appspot.com%2F8942033142534034848%2F%2B%2Fsteps%2Fbot_update%2F0%2Fstdout
[2] https://logs.chromium.org/v/?s=v8%2Fbuildbucket%2Fcr-buildbucket.appspot.com%2F8941307871443322944%2F%2B%2Fsteps%2Fbot_update%2F0%2Fstdout
[3] https://logs.chromium.org/v/?s=v8%2Fbuildbucket%2Fcr-buildbucket.appspot.com%2F8941333453153279680%2F%2B%2Fsteps%2Fbot_update%2F0%2Fstdout
Bug: 862547
Change-Id: I2f849c604656e81ebd7377465d287226b8bdea1a
Reviewed-on: https://chromium-review.googlesource.com/1135645
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
Reviewed-by: Aaron Gable <agable@chromium.org>
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py
index 1abeb6f..5fa2c90 100755
--- a/tests/gclient_scm_test.py
+++ b/tests/gclient_scm_test.py
@@ -449,6 +449,23 @@
self.assert_(gclient_scm.os.path.isfile(file_path))
sys.stdout.close()
+ def testUpdateResetUnsetsFetchConfig(self):
+ if not self.enabled:
+ return
+ options = self.Options()
+ options.reset = True
+
+ scm = gclient_scm.GitWrapper(self.url, self.root_dir,
+ self.relpath)
+ scm._Run(['config', 'remote.origin.fetch',
+ '+refs/heads/bad/ref:refs/remotes/origin/bad/ref'], options)
+
+ file_list = []
+ scm.update(options, (), file_list)
+ self.assertEquals(scm.revinfo(options, (), None),
+ '069c602044c5388d2d15c3f875b057c852003458')
+ sys.stdout.close()
+
def testUpdateResetDeleteUnversionedTrees(self):
if not self.enabled:
return