[autoroll] Commit untracked files before diff step
We are hitting a bug where if all changes are to untracked files then we
will produce identical Change-Ids because `git diff` sees no difference.
Change-Id: Id63798a61c400c0286a28342b93aa132776248e9
diff --git a/README.recipes.md b/README.recipes.md
index 24d7648..05f2e68 100644
--- a/README.recipes.md
+++ b/README.recipes.md
@@ -105,7 +105,7 @@
API for writing auto-roller recipes.
-— **def [attempt\_roll](/recipe_modules/auto_roller/api.py#227)(self, gerrit_project, repo_dir, commit_message, commit_untracked=False, dry_run=False):**
+— **def [attempt\_roll](/recipe_modules/auto_roller/api.py#230)(self, gerrit_project, repo_dir, commit_message, commit_untracked=False, dry_run=False):**
Attempts to submit local edits via the CQ.
diff --git a/recipe_modules/auto_roller/api.py b/recipe_modules/auto_roller/api.py
index 342eb4a..648a513 100644
--- a/recipe_modules/auto_roller/api.py
+++ b/recipe_modules/auto_roller/api.py
@@ -100,6 +100,11 @@
# Gerrit-generated change IDs are 40-character hex digests prefixed with
# "I", so we do that here too.
+ # We need to commit untracked files before the `git diff`, if only untracked
+ # files are modified then the Change-Id will be identical.
+ if commit_untracked:
+ self.m.git("add", "-A")
+
# Compute the git diff for the uncommitted changes in the tree.
diff_step = self.m.git('diff',
stdout=self.m.raw_io.output(),
@@ -122,10 +127,8 @@
# Update message with a Change-Id line and push the roll.
updated_message = commit_message + ("\nChange-Id: %s\n" % change_id)
- if commit_untracked:
- self.m.git.commit(message=updated_message, all_files=True)
- else:
- self.m.git.commit(message=updated_message, all_tracked=True)
+
+ self.m.git.commit(message=updated_message, all_tracked=True)
try:
self.m.git.push('HEAD:refs/for/%s' % UPSTREAM_REF)
diff --git a/recipe_modules/auto_roller/examples/full.expected/zircon_untracked.json b/recipe_modules/auto_roller/examples/full.expected/zircon_untracked.json
index a8b96dd..7e22a14 100644
--- a/recipe_modules/auto_roller/examples/full.expected/zircon_untracked.json
+++ b/recipe_modules/auto_roller/examples/full.expected/zircon_untracked.json
@@ -148,6 +148,15 @@
{
"cmd": [
"git",
+ "add",
+ "-A"
+ ],
+ "cwd": "[START_DIR]/garnet",
+ "name": "git add"
+ },
+ {
+ "cmd": [
+ "git",
"diff"
],
"cwd": "[START_DIR]/garnet",
@@ -167,18 +176,10 @@
{
"cmd": [
"git",
- "add",
- "-A"
- ],
- "cwd": "[START_DIR]/garnet",
- "name": "git add"
- },
- {
- "cmd": [
- "git",
"commit",
"-m",
- "hello world!\nChange-Id: Iabc123\n"
+ "hello world!\nChange-Id: Iabc123\n",
+ "-a"
],
"cwd": "[START_DIR]/garnet",
"name": "git commit"
diff --git a/recipes/dart_pkg_roller.expected/basic.json b/recipes/dart_pkg_roller.expected/basic.json
index b8405e4..946ca2c 100644
--- a/recipes/dart_pkg_roller.expected/basic.json
+++ b/recipes/dart_pkg_roller.expected/basic.json
@@ -248,6 +248,16 @@
{
"cmd": [
"git",
+ "add",
+ "-A"
+ ],
+ "cwd": "[START_DIR]/third_party/dart-pkg/pub",
+ "infra_step": true,
+ "name": "git add"
+ },
+ {
+ "cmd": [
+ "git",
"diff"
],
"cwd": "[START_DIR]/third_party/dart-pkg/pub",
@@ -269,19 +279,10 @@
{
"cmd": [
"git",
- "add",
- "-A"
- ],
- "cwd": "[START_DIR]/third_party/dart-pkg/pub",
- "infra_step": true,
- "name": "git add"
- },
- {
- "cmd": [
- "git",
"commit",
"-m",
- "[roll] Update 3p packages\n\n\n\nTest: CQ\n\nChange-Id: Iabc123\n"
+ "[roll] Update 3p packages\n\n\n\nTest: CQ\n\nChange-Id: Iabc123\n",
+ "-a"
],
"cwd": "[START_DIR]/third_party/dart-pkg/pub",
"infra_step": true,
diff --git a/recipes/release/cherry-pick.expected/has cherrypick file.json b/recipes/release/cherry-pick.expected/has cherrypick file.json
index a1ef846..fbf6ef4 100644
--- a/recipes/release/cherry-pick.expected/has cherrypick file.json
+++ b/recipes/release/cherry-pick.expected/has cherrypick file.json
@@ -220,6 +220,16 @@
{
"cmd": [
"git",
+ "add",
+ "-A"
+ ],
+ "cwd": "[START_DIR]/releases",
+ "infra_step": true,
+ "name": "git add"
+ },
+ {
+ "cmd": [
+ "git",
"diff"
],
"cwd": "[START_DIR]/releases",
@@ -241,19 +251,10 @@
{
"cmd": [
"git",
- "add",
- "-A"
- ],
- "cwd": "[START_DIR]/releases",
- "infra_step": true,
- "name": "git add"
- },
- {
- "cmd": [
- "git",
"commit",
"-m",
- "[cherrypick] Cherry-pick onto 20180830_00_RC00\n\nCherry-picks:\ntopaz/fc4dc762688d2263b254208f444f5c0a4b91bc07\nPin rolls:\n\n\nChange-Id: Iabc123\n"
+ "[cherrypick] Cherry-pick onto 20180830_00_RC00\n\nCherry-picks:\ntopaz/fc4dc762688d2263b254208f444f5c0a4b91bc07\nPin rolls:\n\n\nChange-Id: Iabc123\n",
+ "-a"
],
"cwd": "[START_DIR]/releases",
"infra_step": true,
diff --git a/recipes/release/cherry-pick.expected/one cherrypick.json b/recipes/release/cherry-pick.expected/one cherrypick.json
index 8641758..3d40f2e 100644
--- a/recipes/release/cherry-pick.expected/one cherrypick.json
+++ b/recipes/release/cherry-pick.expected/one cherrypick.json
@@ -204,6 +204,16 @@
{
"cmd": [
"git",
+ "add",
+ "-A"
+ ],
+ "cwd": "[START_DIR]/releases",
+ "infra_step": true,
+ "name": "git add"
+ },
+ {
+ "cmd": [
+ "git",
"diff"
],
"cwd": "[START_DIR]/releases",
@@ -225,19 +235,10 @@
{
"cmd": [
"git",
- "add",
- "-A"
- ],
- "cwd": "[START_DIR]/releases",
- "infra_step": true,
- "name": "git add"
- },
- {
- "cmd": [
- "git",
"commit",
"-m",
- "[cherrypick] Cherry-pick onto 20180830_00_RC00\n\nCherry-picks:\ntopaz/fc4dc762688d2263b254208f444f5c0a4b91bc07\nPin rolls:\n\n\nChange-Id: Iabc123\n"
+ "[cherrypick] Cherry-pick onto 20180830_00_RC00\n\nCherry-picks:\ntopaz/fc4dc762688d2263b254208f444f5c0a4b91bc07\nPin rolls:\n\n\nChange-Id: Iabc123\n",
+ "-a"
],
"cwd": "[START_DIR]/releases",
"infra_step": true,
diff --git a/recipes/release/cherry-pick.expected/one roll.json b/recipes/release/cherry-pick.expected/one roll.json
index 226a9ea..1dc8188 100644
--- a/recipes/release/cherry-pick.expected/one roll.json
+++ b/recipes/release/cherry-pick.expected/one roll.json
@@ -220,6 +220,16 @@
{
"cmd": [
"git",
+ "add",
+ "-A"
+ ],
+ "cwd": "[START_DIR]/releases",
+ "infra_step": true,
+ "name": "git add"
+ },
+ {
+ "cmd": [
+ "git",
"diff"
],
"cwd": "[START_DIR]/releases",
@@ -241,19 +251,10 @@
{
"cmd": [
"git",
- "add",
- "-A"
- ],
- "cwd": "[START_DIR]/releases",
- "infra_step": true,
- "name": "git add"
- },
- {
- "cmd": [
- "git",
"commit",
"-m",
- "[cherrypick] Cherry-pick onto 20180830_00_RC00\n\nCherry-picks:\n\nPin rolls:\ntopaz/fc4dc762688d2263b254208f444f5c0a4b91bc07\n\nChange-Id: Iabc123\n"
+ "[cherrypick] Cherry-pick onto 20180830_00_RC00\n\nCherry-picks:\n\nPin rolls:\ntopaz/fc4dc762688d2263b254208f444f5c0a4b91bc07\n\nChange-Id: Iabc123\n",
+ "-a"
],
"cwd": "[START_DIR]/releases",
"infra_step": true,