119625d8cSopenharmony_ci**This requires enabling the [`derive` feature flag][crate::_features].**
219625d8cSopenharmony_ci
319625d8cSopenharmony_ciGit is an example of several common subcommand patterns.
419625d8cSopenharmony_ci
519625d8cSopenharmony_ciHelp:
619625d8cSopenharmony_ci```console
719625d8cSopenharmony_ci$ git-derive
819625d8cSopenharmony_ci? failed
919625d8cSopenharmony_ciA fictional versioning CLI
1019625d8cSopenharmony_ci
1119625d8cSopenharmony_ciUsage: git-derive[EXE] <COMMAND>
1219625d8cSopenharmony_ci
1319625d8cSopenharmony_ciCommands:
1419625d8cSopenharmony_ci  clone  Clones repos
1519625d8cSopenharmony_ci  diff   Compare two commits
1619625d8cSopenharmony_ci  push   pushes things
1719625d8cSopenharmony_ci  add    adds things
1819625d8cSopenharmony_ci  stash  
1919625d8cSopenharmony_ci  help   Print this message or the help of the given subcommand(s)
2019625d8cSopenharmony_ci
2119625d8cSopenharmony_ciOptions:
2219625d8cSopenharmony_ci  -h, --help  Print help
2319625d8cSopenharmony_ci
2419625d8cSopenharmony_ci$ git-derive help
2519625d8cSopenharmony_ciA fictional versioning CLI
2619625d8cSopenharmony_ci
2719625d8cSopenharmony_ciUsage: git-derive[EXE] <COMMAND>
2819625d8cSopenharmony_ci
2919625d8cSopenharmony_ciCommands:
3019625d8cSopenharmony_ci  clone  Clones repos
3119625d8cSopenharmony_ci  diff   Compare two commits
3219625d8cSopenharmony_ci  push   pushes things
3319625d8cSopenharmony_ci  add    adds things
3419625d8cSopenharmony_ci  stash  
3519625d8cSopenharmony_ci  help   Print this message or the help of the given subcommand(s)
3619625d8cSopenharmony_ci
3719625d8cSopenharmony_ciOptions:
3819625d8cSopenharmony_ci  -h, --help  Print help
3919625d8cSopenharmony_ci
4019625d8cSopenharmony_ci$ git-derive help add
4119625d8cSopenharmony_ciadds things
4219625d8cSopenharmony_ci
4319625d8cSopenharmony_ciUsage: git-derive[EXE] add <PATH>...
4419625d8cSopenharmony_ci
4519625d8cSopenharmony_ciArguments:
4619625d8cSopenharmony_ci  <PATH>...  Stuff to add
4719625d8cSopenharmony_ci
4819625d8cSopenharmony_ciOptions:
4919625d8cSopenharmony_ci  -h, --help  Print help
5019625d8cSopenharmony_ci
5119625d8cSopenharmony_ci```
5219625d8cSopenharmony_ci
5319625d8cSopenharmony_ciA basic argument:
5419625d8cSopenharmony_ci```console
5519625d8cSopenharmony_ci$ git-derive add
5619625d8cSopenharmony_ci? failed
5719625d8cSopenharmony_ciadds things
5819625d8cSopenharmony_ci
5919625d8cSopenharmony_ciUsage: git-derive[EXE] add <PATH>...
6019625d8cSopenharmony_ci
6119625d8cSopenharmony_ciArguments:
6219625d8cSopenharmony_ci  <PATH>...  Stuff to add
6319625d8cSopenharmony_ci
6419625d8cSopenharmony_ciOptions:
6519625d8cSopenharmony_ci  -h, --help  Print help
6619625d8cSopenharmony_ci
6719625d8cSopenharmony_ci$ git-derive add Cargo.toml Cargo.lock
6819625d8cSopenharmony_ciAdding ["Cargo.toml", "Cargo.lock"]
6919625d8cSopenharmony_ci
7019625d8cSopenharmony_ci```
7119625d8cSopenharmony_ci
7219625d8cSopenharmony_ciDefault subcommand:
7319625d8cSopenharmony_ci```console
7419625d8cSopenharmony_ci$ git-derive stash -h
7519625d8cSopenharmony_ciUsage: git-derive[EXE] stash [OPTIONS]
7619625d8cSopenharmony_ci       git-derive[EXE] stash <COMMAND>
7719625d8cSopenharmony_ci
7819625d8cSopenharmony_ciCommands:
7919625d8cSopenharmony_ci  push   
8019625d8cSopenharmony_ci  pop    
8119625d8cSopenharmony_ci  apply  
8219625d8cSopenharmony_ci  help   Print this message or the help of the given subcommand(s)
8319625d8cSopenharmony_ci
8419625d8cSopenharmony_ciOptions:
8519625d8cSopenharmony_ci  -m, --message <MESSAGE>  
8619625d8cSopenharmony_ci  -h, --help               Print help
8719625d8cSopenharmony_ci
8819625d8cSopenharmony_ci$ git-derive stash push -h
8919625d8cSopenharmony_ciUsage: git-derive[EXE] stash push [OPTIONS]
9019625d8cSopenharmony_ci
9119625d8cSopenharmony_ciOptions:
9219625d8cSopenharmony_ci  -m, --message <MESSAGE>  
9319625d8cSopenharmony_ci  -h, --help               Print help
9419625d8cSopenharmony_ci
9519625d8cSopenharmony_ci$ git-derive stash pop -h
9619625d8cSopenharmony_ciUsage: git-derive[EXE] stash pop [STASH]
9719625d8cSopenharmony_ci
9819625d8cSopenharmony_ciArguments:
9919625d8cSopenharmony_ci  [STASH]  
10019625d8cSopenharmony_ci
10119625d8cSopenharmony_ciOptions:
10219625d8cSopenharmony_ci  -h, --help  Print help
10319625d8cSopenharmony_ci
10419625d8cSopenharmony_ci$ git-derive stash -m "Prototype"
10519625d8cSopenharmony_ciPushing StashPushArgs { message: Some("Prototype") }
10619625d8cSopenharmony_ci
10719625d8cSopenharmony_ci$ git-derive stash pop
10819625d8cSopenharmony_ciPopping None
10919625d8cSopenharmony_ci
11019625d8cSopenharmony_ci$ git-derive stash push -m "Prototype"
11119625d8cSopenharmony_ciPushing StashPushArgs { message: Some("Prototype") }
11219625d8cSopenharmony_ci
11319625d8cSopenharmony_ci$ git-derive stash pop
11419625d8cSopenharmony_ciPopping None
11519625d8cSopenharmony_ci
11619625d8cSopenharmony_ci```
11719625d8cSopenharmony_ci
11819625d8cSopenharmony_ciExternal subcommands:
11919625d8cSopenharmony_ci```console
12019625d8cSopenharmony_ci$ git-derive custom-tool arg1 --foo bar
12119625d8cSopenharmony_ciCalling out to "custom-tool" with ["arg1", "--foo", "bar"]
12219625d8cSopenharmony_ci
12319625d8cSopenharmony_ci```
12419625d8cSopenharmony_ci
12519625d8cSopenharmony_ciLast argument:
12619625d8cSopenharmony_ci```console
12719625d8cSopenharmony_ci$ git-derive diff --help
12819625d8cSopenharmony_ciCompare two commits
12919625d8cSopenharmony_ci
13019625d8cSopenharmony_ciUsage: git-derive[EXE] diff [OPTIONS] [COMMIT] [COMMIT] [-- <PATH>]
13119625d8cSopenharmony_ci
13219625d8cSopenharmony_ciArguments:
13319625d8cSopenharmony_ci  [COMMIT]  
13419625d8cSopenharmony_ci  [COMMIT]  
13519625d8cSopenharmony_ci  [PATH]    
13619625d8cSopenharmony_ci
13719625d8cSopenharmony_ciOptions:
13819625d8cSopenharmony_ci      --color[=<WHEN>]  [default: auto] [possible values: always, auto, never]
13919625d8cSopenharmony_ci  -h, --help            Print help
14019625d8cSopenharmony_ci
14119625d8cSopenharmony_ci$ git-derive diff
14219625d8cSopenharmony_ciDiffing stage..worktree  (color=auto)
14319625d8cSopenharmony_ci
14419625d8cSopenharmony_ci$ git-derive diff ./src
14519625d8cSopenharmony_ciDiffing stage..worktree ./src (color=auto)
14619625d8cSopenharmony_ci
14719625d8cSopenharmony_ci$ git-derive diff HEAD ./src
14819625d8cSopenharmony_ciDiffing HEAD..worktree ./src (color=auto)
14919625d8cSopenharmony_ci
15019625d8cSopenharmony_ci$ git-derive diff HEAD~~ -- HEAD
15119625d8cSopenharmony_ciDiffing HEAD~~..worktree HEAD (color=auto)
15219625d8cSopenharmony_ci
15319625d8cSopenharmony_ci$ git-derive diff --color
15419625d8cSopenharmony_ciDiffing stage..worktree  (color=always)
15519625d8cSopenharmony_ci
15619625d8cSopenharmony_ci$ git-derive diff --color=never
15719625d8cSopenharmony_ciDiffing stage..worktree  (color=never)
15819625d8cSopenharmony_ci
15919625d8cSopenharmony_ci```
160