[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,