Roll recipe dependencies (nontrivial).

This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (fuchsia) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8825104045669126881

Please review the expectation changes, and LGTM+CQ.

fuchsia:
https://fuchsia.googlesource.com/infra/recipes.git/+/dc0993fe2fcf639c8b28c55d78e69a29d749b118
  dc0993f (maruel@google.com)
      [git] Set default git timeout to 10m and lower of some operations

More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.

R=chillers@google.com, fujino@google.com, godofredoc@google.com, keyonghan@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I2cd5ef310e508535198569194c41202bbe1453e5
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/25180
Reviewed-by: Casey Hillers <chillers@google.com>
Commit-Queue: Casey Hillers <chillers@google.com>
diff --git a/infra/config/recipes.cfg b/infra/config/recipes.cfg
index 2f01c6f..5d7279b 100644
--- a/infra/config/recipes.cfg
+++ b/infra/config/recipes.cfg
@@ -30,7 +30,7 @@
     },
     "fuchsia": {
       "branch": "refs/heads/main",
-      "revision": "9adbc6e6dcae50880c6bf8540a07ffb890d59b38",
+      "revision": "dc0993fe2fcf639c8b28c55d78e69a29d749b118",
       "url": "https://fuchsia.googlesource.com/infra/recipes.git"
     },
     "recipe_engine": {
diff --git a/recipes/devicelab/devicelab_drone.expected/basic.json b/recipes/devicelab/devicelab_drone.expected/basic.json
index bb68266..228dae2 100644
--- a/recipes/devicelab/devicelab_drone.expected/basic.json
+++ b/recipes/devicelab/devicelab_drone.expected/basic.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone.expected/local-engine.json b/recipes/devicelab/devicelab_drone.expected/local-engine.json
index e807996..10f3329 100644
--- a/recipes/devicelab/devicelab_drone.expected/local-engine.json
+++ b/recipes/devicelab/devicelab_drone.expected/local-engine.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone.expected/no-upload-metrics-linux-staging.json b/recipes/devicelab/devicelab_drone.expected/no-upload-metrics-linux-staging.json
index 312cd95..6409cc0 100644
--- a/recipes/devicelab/devicelab_drone.expected/no-upload-metrics-linux-staging.json
+++ b/recipes/devicelab/devicelab_drone.expected/no-upload-metrics-linux-staging.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone.expected/post-submit.json b/recipes/devicelab/devicelab_drone.expected/post-submit.json
index e06238a..1e46244 100644
--- a/recipes/devicelab/devicelab_drone.expected/post-submit.json
+++ b/recipes/devicelab/devicelab_drone.expected/post-submit.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json b/recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json
index 3533ca5..b495ab3 100644
--- a/recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json
+++ b/recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json b/recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json
index 07c39e8..94aa4bc 100644
--- a/recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json
+++ b/recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json b/recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json
index 1ee03ae..11aba7a 100644
--- a/recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json
+++ b/recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_5_0.expected/basic.json b/recipes/devicelab/devicelab_drone_2_5_0.expected/basic.json
index bb68266..228dae2 100644
--- a/recipes/devicelab/devicelab_drone_2_5_0.expected/basic.json
+++ b/recipes/devicelab/devicelab_drone_2_5_0.expected/basic.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_5_0.expected/local-engine.json b/recipes/devicelab/devicelab_drone_2_5_0.expected/local-engine.json
index e807996..10f3329 100644
--- a/recipes/devicelab/devicelab_drone_2_5_0.expected/local-engine.json
+++ b/recipes/devicelab/devicelab_drone_2_5_0.expected/local-engine.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_5_0.expected/no-upload-metrics-linux-staging.json b/recipes/devicelab/devicelab_drone_2_5_0.expected/no-upload-metrics-linux-staging.json
index 312cd95..6409cc0 100644
--- a/recipes/devicelab/devicelab_drone_2_5_0.expected/no-upload-metrics-linux-staging.json
+++ b/recipes/devicelab/devicelab_drone_2_5_0.expected/no-upload-metrics-linux-staging.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_5_0.expected/post-submit.json b/recipes/devicelab/devicelab_drone_2_5_0.expected/post-submit.json
index e06238a..1e46244 100644
--- a/recipes/devicelab/devicelab_drone_2_5_0.expected/post-submit.json
+++ b/recipes/devicelab/devicelab_drone_2_5_0.expected/post-submit.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_5_0.expected/upload-metrics-mac.json b/recipes/devicelab/devicelab_drone_2_5_0.expected/upload-metrics-mac.json
index 02fe7ee..47a4bb8 100644
--- a/recipes/devicelab/devicelab_drone_2_5_0.expected/upload-metrics-mac.json
+++ b/recipes/devicelab/devicelab_drone_2_5_0.expected/upload-metrics-mac.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_5_0.expected/xcode-chromium-mac.json b/recipes/devicelab/devicelab_drone_2_5_0.expected/xcode-chromium-mac.json
index 61b106d..3c31f32 100644
--- a/recipes/devicelab/devicelab_drone_2_5_0.expected/xcode-chromium-mac.json
+++ b/recipes/devicelab/devicelab_drone_2_5_0.expected/xcode-chromium-mac.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_5_0.expected/xcode-devicelab.json b/recipes/devicelab/devicelab_drone_2_5_0.expected/xcode-devicelab.json
index 3a87e98..1fb5b2a 100644
--- a/recipes/devicelab/devicelab_drone_2_5_0.expected/xcode-devicelab.json
+++ b/recipes/devicelab/devicelab_drone_2_5_0.expected/xcode-devicelab.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_8_0.expected/basic.json b/recipes/devicelab/devicelab_drone_2_8_0.expected/basic.json
index bb68266..228dae2 100644
--- a/recipes/devicelab/devicelab_drone_2_8_0.expected/basic.json
+++ b/recipes/devicelab/devicelab_drone_2_8_0.expected/basic.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_8_0.expected/local-engine.json b/recipes/devicelab/devicelab_drone_2_8_0.expected/local-engine.json
index e807996..10f3329 100644
--- a/recipes/devicelab/devicelab_drone_2_8_0.expected/local-engine.json
+++ b/recipes/devicelab/devicelab_drone_2_8_0.expected/local-engine.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_8_0.expected/no-upload-metrics-linux-staging.json b/recipes/devicelab/devicelab_drone_2_8_0.expected/no-upload-metrics-linux-staging.json
index 312cd95..6409cc0 100644
--- a/recipes/devicelab/devicelab_drone_2_8_0.expected/no-upload-metrics-linux-staging.json
+++ b/recipes/devicelab/devicelab_drone_2_8_0.expected/no-upload-metrics-linux-staging.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_8_0.expected/post-submit.json b/recipes/devicelab/devicelab_drone_2_8_0.expected/post-submit.json
index e06238a..1e46244 100644
--- a/recipes/devicelab/devicelab_drone_2_8_0.expected/post-submit.json
+++ b/recipes/devicelab/devicelab_drone_2_8_0.expected/post-submit.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_8_0.expected/upload-metrics-mac.json b/recipes/devicelab/devicelab_drone_2_8_0.expected/upload-metrics-mac.json
index 7f5c46b..70291b7 100644
--- a/recipes/devicelab/devicelab_drone_2_8_0.expected/upload-metrics-mac.json
+++ b/recipes/devicelab/devicelab_drone_2_8_0.expected/upload-metrics-mac.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_8_0.expected/xcode-chromium-mac.json b/recipes/devicelab/devicelab_drone_2_8_0.expected/xcode-chromium-mac.json
index 71d8ff4..b08d926 100644
--- a/recipes/devicelab/devicelab_drone_2_8_0.expected/xcode-chromium-mac.json
+++ b/recipes/devicelab/devicelab_drone_2_8_0.expected/xcode-chromium-mac.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/devicelab/devicelab_drone_2_8_0.expected/xcode-devicelab.json b/recipes/devicelab/devicelab_drone_2_8_0.expected/xcode-devicelab.json
index 8ae6a36..efac965 100644
--- a/recipes/devicelab/devicelab_drone_2_8_0.expected/xcode-devicelab.json
+++ b/recipes/devicelab/devicelab_drone_2_8_0.expected/xcode-devicelab.json
@@ -214,7 +214,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit time"
+    "name": "git commit time",
+    "timeout": 600.0
   },
   {
     "cmd": [],
diff --git a/recipes/infra/ci_yaml.expected/basic.json b/recipes/infra/ci_yaml.expected/basic.json
index 0690537..660fe0c 100644
--- a/recipes/infra/ci_yaml.expected/basic.json
+++ b/recipes/infra/ci_yaml.expected/basic.json
@@ -890,6 +890,7 @@
       }
     },
     "name": "check for no-op commit",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@stdout@hello@@@",
       "@@@STEP_LOG_END@stdout@@@"
@@ -915,7 +916,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git add"
+    "name": "git add",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -937,7 +939,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -968,6 +971,7 @@
       }
     },
     "name": "calculate Change-Id.git diff",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@diff (without hashes)@diff --git a/foo.txt b/foo.txt@@@",
@@ -1007,6 +1011,7 @@
       }
     },
     "name": "calculate Change-Id.git hash-object",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1196,7 +1201,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit"
+    "name": "git commit",
+    "timeout": 600.0
   },
   {
     "cmd": [
diff --git a/recipes/infra/ci_yaml.expected/release.json b/recipes/infra/ci_yaml.expected/release.json
index 2973540..1ab538b 100644
--- a/recipes/infra/ci_yaml.expected/release.json
+++ b/recipes/infra/ci_yaml.expected/release.json
@@ -890,6 +890,7 @@
       }
     },
     "name": "check for no-op commit",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@stdout@hello@@@",
       "@@@STEP_LOG_END@stdout@@@"
@@ -915,7 +916,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git add"
+    "name": "git add",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -937,7 +939,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -968,6 +971,7 @@
       }
     },
     "name": "calculate Change-Id.git diff",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@diff (without hashes)@diff --git a/foo.txt b/foo.txt@@@",
@@ -1007,6 +1011,7 @@
       }
     },
     "name": "calculate Change-Id.git hash-object",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1196,7 +1201,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit"
+    "name": "git commit",
+    "timeout": 600.0
   },
   {
     "cmd": [
diff --git a/recipes/infra/ci_yaml.expected/staging.json b/recipes/infra/ci_yaml.expected/staging.json
index d7fb173..db20a5d 100644
--- a/recipes/infra/ci_yaml.expected/staging.json
+++ b/recipes/infra/ci_yaml.expected/staging.json
@@ -890,6 +890,7 @@
       }
     },
     "name": "check for no-op commit",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@stdout@hello@@@",
       "@@@STEP_LOG_END@stdout@@@"
@@ -915,7 +916,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git add"
+    "name": "git add",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -937,7 +939,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -968,6 +971,7 @@
       }
     },
     "name": "calculate Change-Id.git diff",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@diff (without hashes)@diff --git a/foo.txt b/foo.txt@@@",
@@ -1007,6 +1011,7 @@
       }
     },
     "name": "calculate Change-Id.git hash-object",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1196,7 +1201,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit"
+    "name": "git commit",
+    "timeout": 600.0
   },
   {
     "cmd": [
diff --git a/recipes/infra/ci_yaml_2_8_0.expected/basic.json b/recipes/infra/ci_yaml_2_8_0.expected/basic.json
index 0690537..660fe0c 100644
--- a/recipes/infra/ci_yaml_2_8_0.expected/basic.json
+++ b/recipes/infra/ci_yaml_2_8_0.expected/basic.json
@@ -890,6 +890,7 @@
       }
     },
     "name": "check for no-op commit",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@stdout@hello@@@",
       "@@@STEP_LOG_END@stdout@@@"
@@ -915,7 +916,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git add"
+    "name": "git add",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -937,7 +939,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -968,6 +971,7 @@
       }
     },
     "name": "calculate Change-Id.git diff",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@diff (without hashes)@diff --git a/foo.txt b/foo.txt@@@",
@@ -1007,6 +1011,7 @@
       }
     },
     "name": "calculate Change-Id.git hash-object",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1196,7 +1201,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit"
+    "name": "git commit",
+    "timeout": 600.0
   },
   {
     "cmd": [
diff --git a/recipes/infra/ci_yaml_2_8_0.expected/release.json b/recipes/infra/ci_yaml_2_8_0.expected/release.json
index 2973540..1ab538b 100644
--- a/recipes/infra/ci_yaml_2_8_0.expected/release.json
+++ b/recipes/infra/ci_yaml_2_8_0.expected/release.json
@@ -890,6 +890,7 @@
       }
     },
     "name": "check for no-op commit",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@stdout@hello@@@",
       "@@@STEP_LOG_END@stdout@@@"
@@ -915,7 +916,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git add"
+    "name": "git add",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -937,7 +939,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -968,6 +971,7 @@
       }
     },
     "name": "calculate Change-Id.git diff",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@diff (without hashes)@diff --git a/foo.txt b/foo.txt@@@",
@@ -1007,6 +1011,7 @@
       }
     },
     "name": "calculate Change-Id.git hash-object",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1196,7 +1201,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit"
+    "name": "git commit",
+    "timeout": 600.0
   },
   {
     "cmd": [
diff --git a/recipes/infra/ci_yaml_2_8_0.expected/staging.json b/recipes/infra/ci_yaml_2_8_0.expected/staging.json
index d7fb173..db20a5d 100644
--- a/recipes/infra/ci_yaml_2_8_0.expected/staging.json
+++ b/recipes/infra/ci_yaml_2_8_0.expected/staging.json
@@ -890,6 +890,7 @@
       }
     },
     "name": "check for no-op commit",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@stdout@hello@@@",
       "@@@STEP_LOG_END@stdout@@@"
@@ -915,7 +916,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git add"
+    "name": "git add",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -937,7 +939,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -968,6 +971,7 @@
       }
     },
     "name": "calculate Change-Id.git diff",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@diff (without hashes)@diff --git a/foo.txt b/foo.txt@@@",
@@ -1007,6 +1011,7 @@
       }
     },
     "name": "calculate Change-Id.git hash-object",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1196,7 +1201,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git commit"
+    "name": "git commit",
+    "timeout": 600.0
   },
   {
     "cmd": [
diff --git a/recipes/infra/luci_config.expected/basic.json b/recipes/infra/luci_config.expected/basic.json
index 7e708f3..63ecc2a 100644
--- a/recipes/infra/luci_config.expected/basic.json
+++ b/recipes/infra/luci_config.expected/basic.json
@@ -20,7 +20,8 @@
       "init"
     ],
     "cwd": "[START_DIR]/flutter-infra",
-    "name": "git init"
+    "name": "git init",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -31,7 +32,8 @@
       "https://flutter.googlesource.com/infra"
     ],
     "cwd": "[START_DIR]/flutter-infra",
-    "name": "git remote"
+    "name": "git remote",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -41,7 +43,8 @@
       "https"
     ],
     "cwd": "[START_DIR]/flutter-infra",
-    "name": "set fetch.uriprotocols"
+    "name": "set fetch.uriprotocols",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -92,6 +95,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-infra",
     "name": "cache.git init",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -105,6 +109,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-infra",
     "name": "cache.remote set-url",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -118,6 +123,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-infra",
     "name": "cache.set fetch.uriprotocols",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -133,6 +139,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-infra",
     "name": "cache.replace fetch configs",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -147,6 +154,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-infra",
     "name": "cache.git fetch",
+    "timeout": 1200.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -216,7 +224,8 @@
       "main"
     ],
     "cwd": "[START_DIR]/flutter-infra",
-    "name": "git fetch"
+    "name": "git fetch",
+    "timeout": 1200.0
   },
   {
     "cmd": [
@@ -226,7 +235,8 @@
       "FETCH_HEAD"
     ],
     "cwd": "[START_DIR]/flutter-infra",
-    "name": "git checkout"
+    "name": "git checkout",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -235,7 +245,8 @@
       "HEAD"
     ],
     "cwd": "[START_DIR]/flutter-infra",
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -246,7 +257,8 @@
       "-x"
     ],
     "cwd": "[START_DIR]/flutter-infra",
-    "name": "git clean"
+    "name": "git clean",
+    "timeout": 600.0
   },
   {
     "cmd": [],
@@ -260,6 +272,7 @@
     ],
     "cwd": "[START_DIR]/flutter-infra",
     "name": "submodule.git submodule sync",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -275,6 +288,7 @@
     ],
     "cwd": "[START_DIR]/flutter-infra",
     "name": "submodule.git submodule update",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -288,7 +302,8 @@
       "10"
     ],
     "cwd": "[START_DIR]/infra",
-    "name": "log"
+    "name": "log",
+    "timeout": 600.0
   },
   {
     "cmd": [
diff --git a/recipes/infra/luci_config.expected/cq.json b/recipes/infra/luci_config.expected/cq.json
index 55b4de8..3ba070f 100644
--- a/recipes/infra/luci_config.expected/cq.json
+++ b/recipes/infra/luci_config.expected/cq.json
@@ -52,6 +52,7 @@
       }
     },
     "name": "fetch refs/heads/main.git init",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -78,6 +79,7 @@
       }
     },
     "name": "fetch refs/heads/main.git remote",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -103,6 +105,7 @@
       }
     },
     "name": "fetch refs/heads/main.set fetch.uriprotocols",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -195,6 +198,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.git init",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -220,6 +224,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.remote set-url",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -245,6 +250,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.set fetch.uriprotocols",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -272,6 +278,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.replace fetch configs",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -298,6 +305,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.git fetch",
+    "timeout": 1200.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -416,6 +424,7 @@
       }
     },
     "name": "fetch refs/heads/main.git fetch",
+    "timeout": 1200.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -441,6 +450,7 @@
       }
     },
     "name": "fetch refs/heads/main.git checkout",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -465,6 +475,7 @@
       }
     },
     "name": "fetch refs/heads/main.git rev-parse",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -491,6 +502,7 @@
       }
     },
     "name": "fetch refs/heads/main.git clean",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -522,6 +534,7 @@
       }
     },
     "name": "fetch refs/heads/main.submodule.git submodule sync",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -549,6 +562,7 @@
       }
     },
     "name": "fetch refs/heads/main.submodule.git submodule update",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -600,7 +614,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "remove section"
+    "name": "remove section",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -623,7 +638,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git remote"
+    "name": "git remote",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -645,7 +661,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "set fetch.uriprotocols"
+    "name": "set fetch.uriprotocols",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -732,6 +749,7 @@
       }
     },
     "name": "cache.git init",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -757,6 +775,7 @@
       }
     },
     "name": "cache.remote set-url",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -782,6 +801,7 @@
       }
     },
     "name": "cache.set fetch.uriprotocols",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -809,6 +829,7 @@
       }
     },
     "name": "cache.replace fetch configs",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -835,6 +856,7 @@
       }
     },
     "name": "cache.git fetch",
+    "timeout": 1200.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -952,7 +974,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git fetch"
+    "name": "git fetch",
+    "timeout": 1200.0
   },
   {
     "cmd": [
@@ -974,7 +997,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git checkout"
+    "name": "git checkout",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -995,7 +1019,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -1018,7 +1043,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git clean"
+    "name": "git clean",
+    "timeout": 600.0
   },
   {
     "cmd": [],
@@ -1044,6 +1070,7 @@
       }
     },
     "name": "submodule.git submodule sync",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1071,6 +1098,7 @@
       }
     },
     "name": "submodule.git submodule update",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1094,7 +1122,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rebase"
+    "name": "git rebase",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -1117,7 +1146,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "log"
+    "name": "log",
+    "timeout": 600.0
   },
   {
     "cmd": [
diff --git a/recipes/recipes.expected/ci.json b/recipes/recipes.expected/ci.json
index 8b63ff9..b1a93c3 100644
--- a/recipes/recipes.expected/ci.json
+++ b/recipes/recipes.expected/ci.json
@@ -20,7 +20,8 @@
       "init"
     ],
     "cwd": "[START_DIR]/flutter-recipes",
-    "name": "git init"
+    "name": "git init",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -31,7 +32,8 @@
       "https://flutter.googlesource.com/recipes"
     ],
     "cwd": "[START_DIR]/flutter-recipes",
-    "name": "git remote"
+    "name": "git remote",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -41,7 +43,8 @@
       "https"
     ],
     "cwd": "[START_DIR]/flutter-recipes",
-    "name": "set fetch.uriprotocols"
+    "name": "set fetch.uriprotocols",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -92,6 +95,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-recipes",
     "name": "cache.git init",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -105,6 +109,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-recipes",
     "name": "cache.remote set-url",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -118,6 +123,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-recipes",
     "name": "cache.set fetch.uriprotocols",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -133,6 +139,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-recipes",
     "name": "cache.replace fetch configs",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -147,6 +154,7 @@
     ],
     "cwd": "[CACHE]/git/flutter.googlesource.com-recipes",
     "name": "cache.git fetch",
+    "timeout": 1200.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -216,7 +224,8 @@
       "main"
     ],
     "cwd": "[START_DIR]/flutter-recipes",
-    "name": "git fetch"
+    "name": "git fetch",
+    "timeout": 1200.0
   },
   {
     "cmd": [
@@ -226,7 +235,8 @@
       "FETCH_HEAD"
     ],
     "cwd": "[START_DIR]/flutter-recipes",
-    "name": "git checkout"
+    "name": "git checkout",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -235,7 +245,8 @@
       "HEAD"
     ],
     "cwd": "[START_DIR]/flutter-recipes",
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -246,7 +257,8 @@
       "-x"
     ],
     "cwd": "[START_DIR]/flutter-recipes",
-    "name": "git clean"
+    "name": "git clean",
+    "timeout": 600.0
   },
   {
     "cmd": [],
@@ -260,6 +272,7 @@
     ],
     "cwd": "[START_DIR]/flutter-recipes",
     "name": "submodule.git submodule sync",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -275,6 +288,7 @@
     ],
     "cwd": "[START_DIR]/flutter-recipes",
     "name": "submodule.git submodule update",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -288,7 +302,8 @@
       "10"
     ],
     "cwd": "[START_DIR]/recipes",
-    "name": "log"
+    "name": "log",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -409,6 +424,7 @@
     ],
     "cwd": "[START_DIR]/recipes",
     "name": "get_affected_recipes.git diff-tree",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@files@[@@@",
diff --git a/recipes/recipes.expected/cq_try.json b/recipes/recipes.expected/cq_try.json
index d6fbbe7..074c48d 100644
--- a/recipes/recipes.expected/cq_try.json
+++ b/recipes/recipes.expected/cq_try.json
@@ -52,6 +52,7 @@
       }
     },
     "name": "fetch refs/heads/main.git init",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -78,6 +79,7 @@
       }
     },
     "name": "fetch refs/heads/main.git remote",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -103,6 +105,7 @@
       }
     },
     "name": "fetch refs/heads/main.set fetch.uriprotocols",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -195,6 +198,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.git init",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -220,6 +224,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.remote set-url",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -245,6 +250,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.set fetch.uriprotocols",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -272,6 +278,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.replace fetch configs",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -298,6 +305,7 @@
       }
     },
     "name": "fetch refs/heads/main.cache.git fetch",
+    "timeout": 1200.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -416,6 +424,7 @@
       }
     },
     "name": "fetch refs/heads/main.git fetch",
+    "timeout": 1200.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -441,6 +450,7 @@
       }
     },
     "name": "fetch refs/heads/main.git checkout",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -465,6 +475,7 @@
       }
     },
     "name": "fetch refs/heads/main.git rev-parse",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -491,6 +502,7 @@
       }
     },
     "name": "fetch refs/heads/main.git clean",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -522,6 +534,7 @@
       }
     },
     "name": "fetch refs/heads/main.submodule.git submodule sync",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -549,6 +562,7 @@
       }
     },
     "name": "fetch refs/heads/main.submodule.git submodule update",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
@@ -600,7 +614,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "remove section"
+    "name": "remove section",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -623,7 +638,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git remote"
+    "name": "git remote",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -645,7 +661,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "set fetch.uriprotocols"
+    "name": "set fetch.uriprotocols",
+    "timeout": 60.0
   },
   {
     "cmd": [],
@@ -732,6 +749,7 @@
       }
     },
     "name": "cache.git init",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -757,6 +775,7 @@
       }
     },
     "name": "cache.remote set-url",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -782,6 +801,7 @@
       }
     },
     "name": "cache.set fetch.uriprotocols",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -809,6 +829,7 @@
       }
     },
     "name": "cache.replace fetch configs",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -835,6 +856,7 @@
       }
     },
     "name": "cache.git fetch",
+    "timeout": 1200.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -952,7 +974,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git fetch"
+    "name": "git fetch",
+    "timeout": 1200.0
   },
   {
     "cmd": [
@@ -974,7 +997,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git checkout"
+    "name": "git checkout",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -995,7 +1019,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rev-parse"
+    "name": "git rev-parse",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -1018,7 +1043,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git clean"
+    "name": "git clean",
+    "timeout": 600.0
   },
   {
     "cmd": [],
@@ -1044,6 +1070,7 @@
       }
     },
     "name": "submodule.git submodule sync",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1071,6 +1098,7 @@
       }
     },
     "name": "submodule.git submodule update",
+    "timeout": 600.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1094,7 +1122,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git rebase"
+    "name": "git rebase",
+    "timeout": 60.0
   },
   {
     "cmd": [
@@ -1117,7 +1146,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "log"
+    "name": "log",
+    "timeout": 600.0
   },
   {
     "cmd": [
@@ -1310,6 +1340,7 @@
       }
     },
     "name": "get_affected_recipes.git diff-tree",
+    "timeout": 60.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@files@[@@@",