├── .github └── FUNDING.yml ├── .codespellrc ├── .taplo.toml ├── README.md └── .gitmodules /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: dtolnay 2 | -------------------------------------------------------------------------------- /.codespellrc: -------------------------------------------------------------------------------- 1 | [codespell] 2 | skip = .git,*.csv,*.json,*.wast,MODULE.bazel.lock,./dtolnay/libfyaml-rs/libfyaml-sys/libfyaml,./dtolnay/rust-quiz/docs/questions.js,./serde-rs/json-benchmark/cpp/rapidjson,./serde-rs/serde-rs.github.io/gitbook 3 | ignore-words-list = alse,crate,inout,ser,statics 4 | -------------------------------------------------------------------------------- /.taplo.toml: -------------------------------------------------------------------------------- 1 | exclude = ["dtolnay/basic-toml/tests/**"] 2 | 3 | [formatting] 4 | align_comments = false 5 | array_auto_collapse = false 6 | array_auto_expand = false 7 | indent_string = " " 8 | 9 | [[rule]] 10 | include = ["**/Cargo.toml"] 11 | keys = [ 12 | "dependencies", 13 | "patch.crates-io", 14 | "target.*.dependencies", 15 | "workspace", 16 | ] 17 | [rule.formatting] 18 | reorder_arrays = true 19 | reorder_keys = true 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | A setup for doing git operations across many repos using `git submodule 2 | foreach`. 3 | 4 | ```console 5 | $ git submodule foreach git fetch origin 6 | $ git submodule foreach git checkout origin/master 7 | $ sed -i s/…/…/ */*/.github/workflows/*.yml 8 | $ git submodule foreach git commit -am "…" 9 | $ git submodule foreach git push origin HEAD:master 10 | ``` 11 | 12 | The variables defined by git for the command are: 13 | 14 | - `$name` — name of the submodule section in .gitmodules. Here, this is 15 | set to the repo name, e.g. "syn". 16 | 17 | - `$sm_path` — path of the submodule as recorded in the superproject. This 18 | is the repo's user+name, e.g. "dtolnay/syn" or "serde-rs/json". 19 | 20 | - `$displaypath` — relative path from the current working directory to the 21 | submodule's root directory. 22 | 23 | - `$sha1` — commit as recorded in the superproject. 24 | 25 | - `$toplevel` — absolute path to the top-level of the superproject: 26 | "/path/to/foreach". 27 | 28 | Useful flags: 29 | 30 | - `--quiet` — Unless given --quiet, foreach prints the name of each 31 | submodule before evaluating the command. 32 | 33 | A non-zero return from the command in any submodule causes the processing to 34 | terminate. This can be overridden by adding `|| :` to the end of the command. 35 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "anyhow"] 2 | path = dtolnay/anyhow 3 | url = git@github.com:dtolnay/anyhow 4 | [submodule "argv"] 5 | path = dtolnay/argv 6 | url = git@github.com:dtolnay/argv 7 | [submodule "async-trait"] 8 | path = dtolnay/async-trait 9 | url = git@github.com:dtolnay/async-trait 10 | [submodule "automod"] 11 | path = dtolnay/automod 12 | url = git@github.com:dtolnay/automod 13 | [submodule "bootstrap"] 14 | path = dtolnay/bootstrap 15 | url = git@github.com:dtolnay/bootstrap 16 | [submodule "bufsize"] 17 | path = dtolnay/bufsize 18 | url = git@github.com:dtolnay/bufsize 19 | [submodule "build-alert"] 20 | path = dtolnay/build-alert 21 | url = git@github.com:dtolnay/build-alert 22 | [submodule "cargo-docs-rs"] 23 | path = dtolnay/cargo-docs-rs 24 | url = git@github.com:dtolnay/cargo-docs-rs 25 | [submodule "cargo-expand"] 26 | path = dtolnay/cargo-expand 27 | url = git@github.com:dtolnay/cargo-expand 28 | [submodule "cargo-llvm-lines"] 29 | path = dtolnay/cargo-llvm-lines 30 | url = git@github.com:dtolnay/cargo-llvm-lines 31 | [submodule "cargo-tally"] 32 | path = dtolnay/cargo-tally 33 | url = git@github.com:dtolnay/cargo-tally 34 | [submodule "cargo-unlock"] 35 | path = dtolnay/cargo-unlock 36 | url = git@github.com:dtolnay/cargo-unlock 37 | [submodule "case-studies"] 38 | path = dtolnay/case-studies 39 | url = git@github.com:dtolnay/case-studies 40 | [submodule "clang-ast"] 41 | path = dtolnay/clang-ast 42 | url = git@github.com:dtolnay/clang-ast 43 | [submodule "colorous"] 44 | path = dtolnay/colorous 45 | url = git@github.com:dtolnay/colorous 46 | [submodule "cxx"] 47 | path = dtolnay/cxx 48 | url = git@github.com:dtolnay/cxx 49 | [submodule "dashboard"] 50 | path = dtolnay/dashboard 51 | url = git@github.com:dtolnay/dashboard 52 | [submodule "db-dump"] 53 | path = dtolnay/db-dump 54 | url = git@github.com:dtolnay/db-dump 55 | [submodule "dircnt"] 56 | path = dtolnay/dircnt 57 | url = git@github.com:dtolnay/dircnt 58 | [submodule "dissimilar"] 59 | path = dtolnay/dissimilar 60 | url = git@github.com:dtolnay/dissimilar 61 | [submodule "dragonbox"] 62 | path = dtolnay/dragonbox 63 | url = git@github.com:dtolnay/dragonbox 64 | [submodule "dtoa"] 65 | path = dtolnay/dtoa 66 | url = git@github.com:dtolnay/dtoa 67 | [submodule "dyn-clone"] 68 | path = dtolnay/dyn-clone 69 | url = git@github.com:dtolnay/dyn-clone 70 | [submodule "dyn-hash"] 71 | path = dtolnay/dyn-hash 72 | url = git@github.com:dtolnay/dyn-hash 73 | [submodule "erased-discriminant"] 74 | path = dtolnay/erased-discriminant 75 | url = git@github.com:dtolnay/erased-discriminant 76 | [submodule "erased-serde"] 77 | path = dtolnay/erased-serde 78 | url = git@github.com:dtolnay/erased-serde 79 | [submodule "essay"] 80 | path = dtolnay/essay 81 | url = git@github.com:dtolnay/essay 82 | [submodule "faketty"] 83 | path = dtolnay/faketty 84 | url = git@github.com:dtolnay/faketty 85 | [submodule "get-all-crates"] 86 | path = dtolnay/get-all-crates 87 | url = git@github.com:dtolnay/get-all-crates 88 | [submodule "ghost"] 89 | path = dtolnay/ghost 90 | url = git@github.com:dtolnay/ghost 91 | [submodule "hire"] 92 | path = dtolnay/hire 93 | url = git@github.com:dtolnay/hire 94 | [submodule "include-json"] 95 | path = dtolnay/include-json 96 | url = git@github.com:dtolnay/include-json 97 | [submodule "indoc"] 98 | path = dtolnay/indoc 99 | url = git@github.com:dtolnay/indoc 100 | [submodule "inherent"] 101 | path = dtolnay/inherent 102 | url = git@github.com:dtolnay/inherent 103 | [submodule "install"] 104 | path = dtolnay/install 105 | url = git@github.com:dtolnay/install 106 | [submodule "inventory"] 107 | path = dtolnay/inventory 108 | url = git@github.com:dtolnay/inventory 109 | [submodule "itoa"] 110 | path = dtolnay/itoa 111 | url = git@github.com:dtolnay/itoa 112 | [submodule "link-cplusplus"] 113 | path = dtolnay/link-cplusplus 114 | url = git@github.com:dtolnay/link-cplusplus 115 | [submodule "linkme"] 116 | path = dtolnay/linkme 117 | url = git@github.com:dtolnay/linkme 118 | [submodule "macro-string"] 119 | path = dtolnay/macro-string 120 | url = git@github.com:dtolnay/macro-string 121 | [submodule "miniserde"] 122 | path = dtolnay/miniserde 123 | url = git@github.com:dtolnay/miniserde 124 | [submodule "monostate"] 125 | path = dtolnay/monostate 126 | url = git@github.com:dtolnay/monostate 127 | [submodule "no-panic"] 128 | path = dtolnay/no-panic 129 | url = git@github.com:dtolnay/no-panic 130 | [submodule "oqueue"] 131 | path = dtolnay/oqueue 132 | url = git@github.com:dtolnay/oqueue 133 | [submodule "path-to-error"] 134 | path = dtolnay/path-to-error 135 | url = git@github.com:dtolnay/path-to-error 136 | [submodule "precise"] 137 | path = dtolnay/precise 138 | url = git@github.com:dtolnay/precise 139 | [submodule "prettyplease"] 140 | path = dtolnay/prettyplease 141 | url = git@github.com:dtolnay/prettyplease 142 | [submodule "proc-macro-workshop"] 143 | path = dtolnay/proc-macro-workshop 144 | url = git@github.com:dtolnay/proc-macro-workshop 145 | [submodule "proc-macro2"] 146 | path = dtolnay/proc-macro2 147 | url = git@github.com:dtolnay/proc-macro2 148 | [submodule "quote"] 149 | path = dtolnay/quote 150 | url = git@github.com:dtolnay/quote 151 | [submodule "readonly"] 152 | path = dtolnay/readonly 153 | url = git@github.com:dtolnay/readonly 154 | [submodule "ref-cast"] 155 | path = dtolnay/ref-cast 156 | url = git@github.com:dtolnay/ref-cast 157 | [submodule "reflect"] 158 | path = dtolnay/reflect 159 | url = git@github.com:dtolnay/reflect 160 | [submodule "remain"] 161 | path = dtolnay/remain 162 | url = git@github.com:dtolnay/remain 163 | [submodule "respan"] 164 | path = dtolnay/respan 165 | url = git@github.com:dtolnay/respan 166 | [submodule "rust-quiz"] 167 | path = dtolnay/rust-quiz 168 | url = git@github.com:dtolnay/rust-quiz 169 | [submodule "rust-toolchain"] 170 | path = dtolnay/rust-toolchain 171 | url = git@github.com:dtolnay/rust-toolchain 172 | [submodule "rustflags"] 173 | path = dtolnay/rustflags 174 | url = git@github.com:dtolnay/rustflags 175 | [submodule "rustversion"] 176 | path = dtolnay/rustversion 177 | url = git@github.com:dtolnay/rustversion 178 | [submodule "ryu"] 179 | path = dtolnay/ryu 180 | url = git@github.com:dtolnay/ryu 181 | [submodule "scratch"] 182 | path = dtolnay/scratch 183 | url = git@github.com:dtolnay/scratch 184 | [submodule "semver"] 185 | path = dtolnay/semver 186 | url = git@github.com:dtolnay/semver 187 | [submodule "semver-trick"] 188 | path = dtolnay/semver-trick 189 | url = git@github.com:dtolnay/semver-trick 190 | [submodule "seq-macro"] 191 | path = dtolnay/seq-macro 192 | url = git@github.com:dtolnay/seq-macro 193 | [submodule "serde-ignored"] 194 | path = dtolnay/serde-ignored 195 | url = git@github.com:dtolnay/serde-ignored 196 | [submodule "serde-repr"] 197 | path = dtolnay/serde-repr 198 | url = git@github.com:dtolnay/serde-repr 199 | [submodule "serde-stacker"] 200 | path = dtolnay/serde-stacker 201 | url = git@github.com:dtolnay/serde-stacker 202 | [submodule "serde-starlark"] 203 | path = dtolnay/serde-starlark 204 | url = git@github.com:dtolnay/serde-starlark 205 | [submodule "serde-untagged"] 206 | path = dtolnay/serde-untagged 207 | url = git@github.com:dtolnay/serde-untagged 208 | [submodule "sha1dir"] 209 | path = dtolnay/sha1dir 210 | url = git@github.com:dtolnay/sha1dir 211 | [submodule "star-history"] 212 | path = dtolnay/star-history 213 | url = git@github.com:dtolnay/star-history 214 | [submodule "syn"] 215 | path = dtolnay/syn 216 | url = git@github.com:dtolnay/syn 217 | [submodule "talks"] 218 | path = dtolnay/talks 219 | url = git@github.com:dtolnay/talks 220 | [submodule "target-triple"] 221 | path = dtolnay/target-triple 222 | url = git@github.com:dtolnay/target-triple 223 | [submodule "thiserror"] 224 | path = dtolnay/thiserror 225 | url = git@github.com:dtolnay/thiserror 226 | [submodule "threadbound"] 227 | path = dtolnay/threadbound 228 | url = git@github.com:dtolnay/threadbound 229 | [submodule "trybuild"] 230 | path = dtolnay/trybuild 231 | url = git@github.com:dtolnay/trybuild 232 | [submodule "typeid"] 233 | path = dtolnay/typeid 234 | url = git@github.com:dtolnay/typeid 235 | [submodule "typetag"] 236 | path = dtolnay/typetag 237 | url = git@github.com:dtolnay/typetag 238 | [submodule "unicode-ident"] 239 | path = dtolnay/unicode-ident 240 | url = git@github.com:dtolnay/unicode-ident 241 | [submodule "watt"] 242 | path = dtolnay/watt 243 | url = git@github.com:dtolnay/watt 244 | [submodule "bench"] 245 | path = serde-rs/bench 246 | url = git@github.com:serde-rs/bench 247 | [submodule "bytes"] 248 | path = serde-rs/bytes 249 | url = git@github.com:serde-rs/bytes 250 | [submodule "serde-dashboard"] 251 | path = serde-rs/dashboard 252 | url = git@github.com:serde-rs/dashboard 253 | [submodule "example-format"] 254 | path = serde-rs/example-format 255 | url = git@github.com:serde-rs/example-format 256 | [submodule "json"] 257 | path = serde-rs/json 258 | url = git@github.com:serde-rs/json 259 | [submodule "serde"] 260 | path = serde-rs/serde 261 | url = git@github.com:serde-rs/serde 262 | [submodule "serde-rs.github.io"] 263 | path = serde-rs/serde-rs.github.io 264 | url = git@github.com:serde-rs/serde-rs.github.io 265 | --------------------------------------------------------------------------------