eac_git 0.1.0 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/lib/eac_git/executables.rb +24 -4
  3. data/lib/eac_git/local.rb +5 -1
  4. data/lib/eac_git/local/dirty_files.rb +37 -0
  5. data/lib/eac_git/rspec.rb +17 -0
  6. data/lib/eac_git/version.rb +1 -1
  7. data/vendor/git-subrepo/Changes +110 -0
  8. data/vendor/git-subrepo/Intro.pod +509 -0
  9. data/vendor/git-subrepo/License +21 -0
  10. data/vendor/git-subrepo/Makefile +82 -0
  11. data/vendor/git-subrepo/Meta +28 -0
  12. data/vendor/git-subrepo/ReadMe.pod +698 -0
  13. data/vendor/git-subrepo/doc/comparison.swim +35 -0
  14. data/vendor/git-subrepo/doc/git-subrepo.swim +608 -0
  15. data/vendor/git-subrepo/doc/intro-to-subrepo.swim +387 -0
  16. data/vendor/git-subrepo/ext/bashplus/Changes +15 -0
  17. data/vendor/git-subrepo/ext/bashplus/License +21 -0
  18. data/vendor/git-subrepo/ext/bashplus/Makefile +45 -0
  19. data/vendor/git-subrepo/ext/bashplus/Meta +28 -0
  20. data/vendor/git-subrepo/ext/bashplus/ReadMe.pod +77 -0
  21. data/vendor/git-subrepo/ext/bashplus/bin/bash+ +43 -0
  22. data/vendor/git-subrepo/ext/bashplus/doc/bash+.swim +61 -0
  23. data/vendor/git-subrepo/ext/bashplus/lib/bash+.bash +92 -0
  24. data/vendor/git-subrepo/ext/bashplus/man/man1/bash+.1 +134 -0
  25. data/vendor/git-subrepo/ext/bashplus/man/man3/bash+.3 +134 -0
  26. data/vendor/git-subrepo/ext/bashplus/test/base.t +12 -0
  27. data/vendor/git-subrepo/ext/bashplus/test/fcopy.t +22 -0
  28. data/vendor/git-subrepo/ext/bashplus/test/lib/foo/bar.bash +3 -0
  29. data/vendor/git-subrepo/ext/bashplus/test/lib/foo/foo.bash +3 -0
  30. data/vendor/git-subrepo/ext/bashplus/test/source-bash+-std.t +18 -0
  31. data/vendor/git-subrepo/ext/bashplus/test/source-bash+.t +23 -0
  32. data/vendor/git-subrepo/ext/bashplus/test/test.bash +70 -0
  33. data/vendor/git-subrepo/ext/bashplus/test/use.t +19 -0
  34. data/vendor/git-subrepo/ext/test-more-bash/Changes +15 -0
  35. data/vendor/git-subrepo/ext/test-more-bash/License +21 -0
  36. data/vendor/git-subrepo/ext/test-more-bash/Makefile +20 -0
  37. data/vendor/git-subrepo/ext/test-more-bash/Meta +30 -0
  38. data/vendor/git-subrepo/ext/test-more-bash/ReadMe.pod +115 -0
  39. data/vendor/git-subrepo/ext/test-more-bash/doc/test-more.swim +89 -0
  40. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Changes +15 -0
  41. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/License +21 -0
  42. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Makefile +45 -0
  43. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Meta +28 -0
  44. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/ReadMe.pod +77 -0
  45. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/bin/bash+ +43 -0
  46. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/doc/bash+.swim +61 -0
  47. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/lib/bash+.bash +92 -0
  48. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man1/bash+.1 +134 -0
  49. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man3/bash+.3 +134 -0
  50. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/base.t +12 -0
  51. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/fcopy.t +22 -0
  52. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/bar.bash +3 -0
  53. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/foo.bash +3 -0
  54. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+-std.t +18 -0
  55. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+.t +23 -0
  56. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/test.bash +70 -0
  57. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/use.t +19 -0
  58. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Changes +15 -0
  59. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/License +21 -0
  60. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Makefile +37 -0
  61. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Meta +28 -0
  62. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/ReadMe.pod +66 -0
  63. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/doc/test-tap.swim +48 -0
  64. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/lib/test/tap.bash +153 -0
  65. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/man/man3/test-tap.3 +119 -0
  66. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/bail_out.t +13 -0
  67. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/done.t +10 -0
  68. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail.t +20 -0
  69. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail_fast.t +15 -0
  70. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/helper.bash +9 -0
  71. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/pass.t +9 -0
  72. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/plan.t +10 -0
  73. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/skip_all.t +20 -0
  74. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/tap.t +13 -0
  75. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/bail.t +14 -0
  76. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail.t +7 -0
  77. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail_fast.t +12 -0
  78. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-init.t +8 -0
  79. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-plan.t +9 -0
  80. data/vendor/git-subrepo/ext/test-more-bash/lib/test/more.bash +95 -0
  81. data/vendor/git-subrepo/ext/test-more-bash/man/man3/test-more.3 +173 -0
  82. data/vendor/git-subrepo/ext/test-more-bash/test/fail.t +20 -0
  83. data/vendor/git-subrepo/ext/test-more-bash/test/more.t +20 -0
  84. data/vendor/git-subrepo/ext/test-more-bash/test/pass.t +9 -0
  85. data/vendor/git-subrepo/ext/test-more-bash/test/setup +8 -0
  86. data/vendor/git-subrepo/ext/test-more-bash/test/skip_all.t +11 -0
  87. data/vendor/git-subrepo/ext/test-more-bash/test/test/fail1.t +12 -0
  88. data/vendor/git-subrepo/ext/test-more-bash/test/test/skip_all.t +10 -0
  89. data/vendor/git-subrepo/lib/git-subrepo +1903 -0
  90. data/vendor/git-subrepo/lib/git-subrepo.d/bash+.bash +1 -0
  91. data/vendor/git-subrepo/lib/git-subrepo.d/help-functions.bash +339 -0
  92. data/vendor/git-subrepo/man/man1/git-subrepo.1 +743 -0
  93. data/vendor/git-subrepo/note/0.4.0 +12 -0
  94. data/vendor/git-subrepo/note/AllGitCmds +148 -0
  95. data/vendor/git-subrepo/note/Cases +32 -0
  96. data/vendor/git-subrepo/note/Commands +33 -0
  97. data/vendor/git-subrepo/note/Dags +199 -0
  98. data/vendor/git-subrepo/note/Gists +7 -0
  99. data/vendor/git-subrepo/note/Links +25 -0
  100. data/vendor/git-subrepo/note/Plugins +10 -0
  101. data/vendor/git-subrepo/note/Spec +39 -0
  102. data/vendor/git-subrepo/note/Story1 +57 -0
  103. data/vendor/git-subrepo/note/ToDo +55 -0
  104. data/vendor/git-subrepo/note/design.swim +137 -0
  105. data/vendor/git-subrepo/note/design2.swim +85 -0
  106. data/vendor/git-subrepo/note/init-test +38 -0
  107. data/vendor/git-subrepo/note/pull-dance.txt +18 -0
  108. data/vendor/git-subrepo/note/recreate-rebase-conflict.sh +56 -0
  109. data/vendor/git-subrepo/note/subtree-rebase-fail-example/test.bash +29 -0
  110. data/vendor/git-subrepo/note/test-subrepo-push.sh +69 -0
  111. data/vendor/git-subrepo/note/test.sh +58 -0
  112. data/vendor/git-subrepo/pkg/bin/generate-completion.pl +210 -0
  113. data/vendor/git-subrepo/pkg/bin/generate-help-functions.pl +89 -0
  114. data/vendor/git-subrepo/share/completion.bash +42 -0
  115. data/vendor/git-subrepo/share/enable-completion.sh +50 -0
  116. data/vendor/git-subrepo/share/git-completion.bash +2738 -0
  117. data/vendor/git-subrepo/share/zsh-completion/_git-subrepo +81 -0
  118. data/vendor/git-subrepo/test/branch-all.t +41 -0
  119. data/vendor/git-subrepo/test/branch-rev-list-one-path.t +43 -0
  120. data/vendor/git-subrepo/test/branch-rev-list.t +47 -0
  121. data/vendor/git-subrepo/test/branch.t +52 -0
  122. data/vendor/git-subrepo/test/clean.t +43 -0
  123. data/vendor/git-subrepo/test/clone-annotated-tag.t +45 -0
  124. data/vendor/git-subrepo/test/clone.t +107 -0
  125. data/vendor/git-subrepo/test/compile.t +19 -0
  126. data/vendor/git-subrepo/test/config.t +58 -0
  127. data/vendor/git-subrepo/test/encode.t +91 -0
  128. data/vendor/git-subrepo/test/error.t +171 -0
  129. data/vendor/git-subrepo/test/fetch.t +43 -0
  130. data/vendor/git-subrepo/test/gitignore.t +61 -0
  131. data/vendor/git-subrepo/test/init.t +64 -0
  132. data/vendor/git-subrepo/test/issue29.t +98 -0
  133. data/vendor/git-subrepo/test/issue95.t +98 -0
  134. data/vendor/git-subrepo/test/issue96.t +96 -0
  135. data/vendor/git-subrepo/test/pull-all.t +38 -0
  136. data/vendor/git-subrepo/test/pull-merge.t +113 -0
  137. data/vendor/git-subrepo/test/pull-message.t +88 -0
  138. data/vendor/git-subrepo/test/pull-new-branch.t +58 -0
  139. data/vendor/git-subrepo/test/pull-ours.t +90 -0
  140. data/vendor/git-subrepo/test/pull-theirs.t +82 -0
  141. data/vendor/git-subrepo/test/pull-twice.t +44 -0
  142. data/vendor/git-subrepo/test/pull-worktree.t +40 -0
  143. data/vendor/git-subrepo/test/pull.t +99 -0
  144. data/vendor/git-subrepo/test/push-after-init.t +51 -0
  145. data/vendor/git-subrepo/test/push-force.t +56 -0
  146. data/vendor/git-subrepo/test/push-new-branch.t +61 -0
  147. data/vendor/git-subrepo/test/push-no-changes.t +29 -0
  148. data/vendor/git-subrepo/test/push-squash.t +56 -0
  149. data/vendor/git-subrepo/test/push.t +176 -0
  150. data/vendor/git-subrepo/test/reclone.t +45 -0
  151. data/vendor/git-subrepo/test/repo/bar/HEAD +1 -0
  152. data/vendor/git-subrepo/test/repo/bar/config +4 -0
  153. data/vendor/git-subrepo/test/repo/bar/objects/1f/0c4b264caed0126814a0ede851a1e0b4e16ae6 +0 -0
  154. data/vendor/git-subrepo/test/repo/bar/objects/87/46903fdb1b9c2101377880125917c2e05b4d69 +0 -0
  155. data/vendor/git-subrepo/test/repo/bar/objects/94/c86ffc745232d89f78c6f895e11e71272518db +0 -0
  156. data/vendor/git-subrepo/test/repo/bar/objects/c6/76c57b6576743fa56278527aa60ebd2e202a7c +0 -0
  157. data/vendor/git-subrepo/test/repo/bar/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  158. data/vendor/git-subrepo/test/repo/bar/objects/f6/2a8ff3feadf39b0a98f1a86ec6d1eb33858ee9 +0 -0
  159. data/vendor/git-subrepo/test/repo/bar/refs/heads/master +1 -0
  160. data/vendor/git-subrepo/test/repo/bar/refs/tags/A +1 -0
  161. data/vendor/git-subrepo/test/repo/foo/HEAD +1 -0
  162. data/vendor/git-subrepo/test/repo/foo/config +4 -0
  163. data/vendor/git-subrepo/test/repo/foo/objects/a0/f4cdaaf533a936296cdebbed8206c3b9ededa8 +0 -0
  164. data/vendor/git-subrepo/test/repo/foo/objects/e2/1291a1ad392a9d4c51dd9586804f1467b28afd +0 -0
  165. data/vendor/git-subrepo/test/repo/foo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  166. data/vendor/git-subrepo/test/repo/foo/refs/heads/master +1 -0
  167. data/vendor/git-subrepo/test/repo/init/HEAD +1 -0
  168. data/vendor/git-subrepo/test/repo/init/config +5 -0
  169. data/vendor/git-subrepo/test/repo/init/objects/11/523f5dcf03b4c89b592dc8a3d0308f68da2386 +0 -0
  170. data/vendor/git-subrepo/test/repo/init/objects/14/2addf8ec5f37334e837440122c62f2c68a29ad +0 -0
  171. data/vendor/git-subrepo/test/repo/init/objects/32/5180321750a21cd7a4e7ecda319e557a4f6a09 +2 -0
  172. data/vendor/git-subrepo/test/repo/init/objects/3d/918c6901c02f43af5d31779dd5e1f9166aeb36 +0 -0
  173. data/vendor/git-subrepo/test/repo/init/objects/3e/4cb596066dce63ba4d047abddb677389b65e19 +0 -0
  174. data/vendor/git-subrepo/test/repo/init/objects/4b/6e53022e7a04f07887697e4f3d7c377fd9822b +0 -0
  175. data/vendor/git-subrepo/test/repo/init/objects/58/931fc1bd559b59c41ea738fc7ad04f9ad01bd3 +0 -0
  176. data/vendor/git-subrepo/test/repo/init/objects/5e/c0c28e1b806f25efdca18fcf7a74b49c3755bd +0 -0
  177. data/vendor/git-subrepo/test/repo/init/objects/75/fa6584e748f57eff06eebdc55e9ac21d4fcbf2 +1 -0
  178. data/vendor/git-subrepo/test/repo/init/objects/80/2d5edbd5e1cb7fca82b5bd38e7c8a0a496fb20 +0 -0
  179. data/vendor/git-subrepo/test/repo/init/objects/94/7b3d714c38791e95ad6f928b48c98bb8708acd +0 -0
  180. data/vendor/git-subrepo/test/repo/init/objects/95/e1f2df3f4d5f3d7a60588c25a7ca8a913d3c2a +1 -0
  181. data/vendor/git-subrepo/test/repo/init/objects/b1/5f4a7666baf40d949548ead946a3370e273479 +0 -0
  182. data/vendor/git-subrepo/test/repo/init/objects/c3/ee8978c4c5d84c3b7d00ba8e5906933d027882 +0 -0
  183. data/vendor/git-subrepo/test/repo/init/objects/c8/b0bffbc405ef3fad7354ff833fbec36d67ddfa +3 -0
  184. data/vendor/git-subrepo/test/repo/init/objects/dd/8bdb934ec848137f011fe423b185505c343626 +2 -0
  185. data/vendor/git-subrepo/test/repo/init/objects/e2/9be58c767cfeb27235c995d293a7d71aac0135 +2 -0
  186. data/vendor/git-subrepo/test/repo/init/objects/ee/1224401fc6aac595145fa727dcf6706ac8aec1 +1 -0
  187. data/vendor/git-subrepo/test/repo/init/objects/f1/cc1a657b2e805c400f5dcaaa76bd29c6178b1b +0 -0
  188. data/vendor/git-subrepo/test/repo/init/refs/heads/master +1 -0
  189. data/vendor/git-subrepo/test/setup +205 -0
  190. data/vendor/git-subrepo/test/status.t +68 -0
  191. data/vendor/git-subrepo/test/submodule.t +45 -0
  192. metadata +190 -4
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013-2020 Ingy döt Net
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,82 @@
1
+ # Make sure we have 'git' and it works OK:
2
+ ifeq ($(shell which git),)
3
+ $(error 'git' is not installed on this system)
4
+ endif
5
+
6
+ # Set variables:
7
+ NAME := git-subrepo
8
+ LIB := lib/$(NAME)
9
+ DOC := doc/$(NAME).swim
10
+ MAN1 := man/man1
11
+ EXT := $(LIB).d
12
+ EXTS := $(shell find $(EXT) -type f) \
13
+ $(shell find $(EXT) -type l)
14
+ SHARE = share
15
+
16
+ # Install variables:
17
+ PREFIX ?= /usr/local
18
+ INSTALL_LIB ?= $(DESTDIR)$(shell git --exec-path)
19
+ INSTALL_EXT ?= $(INSTALL_LIB)/$(NAME).d
20
+ INSTALL_MAN1 ?= $(DESTDIR)$(PREFIX)/share/man/man1
21
+
22
+ # Basic targets:
23
+ default: help
24
+
25
+ help:
26
+ @echo 'Makefile rules:'
27
+ @echo ''
28
+ @echo 'test Run all tests'
29
+ @echo 'install Install $(NAME)'
30
+ @echo 'uninstall Uninstall $(NAME)'
31
+ @echo 'env Show environment variables to set'
32
+
33
+ .PHONY: test
34
+ test:
35
+ prove $(PROVEOPT:%=% )test/
36
+
37
+ # Install support:
38
+ install:
39
+ install -d -m 0755 $(INSTALL_LIB)/
40
+ install -C -m 0755 $(LIB) $(INSTALL_LIB)/
41
+ install -d -m 0755 $(INSTALL_EXT)/
42
+ install -C -m 0755 $(EXTS) $(INSTALL_EXT)/
43
+ install -d -m 0755 $(INSTALL_MAN1)/
44
+ install -C -m 0644 $(MAN1)/$(NAME).1 $(INSTALL_MAN1)/
45
+
46
+ # Uninstall support:
47
+ uninstall:
48
+ rm -f $(INSTALL_LIB)/$(NAME)
49
+ rm -fr $(INSTALL_EXT)
50
+ rm -f $(INSTALL_MAN1)/$(NAME).1
51
+
52
+ env:
53
+ @echo "export PATH=\"$$PWD/lib:\$$PATH\""
54
+ @echo "export MANPATH=\"$$PWD/man:\$$MANPATH\""
55
+
56
+ # Doc rules:
57
+ .PHONY: doc
58
+ update: doc compgen
59
+
60
+ force:
61
+
62
+ doc: ReadMe.pod Intro.pod $(MAN1)/$(NAME).1
63
+ perl pkg/bin/generate-help-functions.pl $(DOC) > \
64
+ $(EXT)/help-functions.bash
65
+
66
+ ReadMe.pod: $(DOC) force
67
+ swim --to=pod --wrap --complete $< > $@
68
+
69
+ Intro.pod: doc/intro-to-subrepo.swim force
70
+ swim --to=pod --wrap --complete $< > $@
71
+
72
+ $(MAN1)/%.1: doc/%.swim Makefile force
73
+ swim --to=man --wrap $< > $@
74
+
75
+ compgen: force
76
+ perl pkg/bin/generate-completion.pl bash $(DOC) $(LIB) > \
77
+ $(SHARE)/completion.bash
78
+ perl pkg/bin/generate-completion.pl zsh $(DOC) $(LIB) > \
79
+ $(SHARE)/zsh-completion/_git-subrepo
80
+
81
+ clean purge:
82
+ rm -fr tmp
@@ -0,0 +1,28 @@
1
+ =meta: 0.0.2
2
+
3
+ name: git-subrepo
4
+ version: 0.4.1
5
+ abstract: Git Submodule Alternative
6
+ homepage: https://github.com/ingydotnet/git-subrepo#readme
7
+ license: MIT
8
+ copyright: 2013-2020
9
+
10
+ author:
11
+ name: Ingy döt Net
12
+ email: ingy@ingy.net
13
+ github: ingydotnet
14
+ twitter: ingydotnet
15
+ freenode: ingy
16
+ homepage: http://ingy.net
17
+
18
+ requires:
19
+ bash: 4.0.0
20
+ git: 2.7.0
21
+ test:
22
+ cmd: make test
23
+ install: make install
24
+
25
+ devel:
26
+ git: git@github.org:ingydotnet/git-subrepo.git
27
+ irc: irc.freenode.net/gitcommands
28
+ bug: https://github.com/ingydotnet/git-subrepo/issues/
@@ -0,0 +1,698 @@
1
+ =pod
2
+
3
+ =for comment
4
+ DO NOT EDIT. This Pod was generated by Swim v0.1.48.
5
+ See http://github.com/ingydotnet/swim-pm#readme
6
+
7
+ =encoding utf8
8
+
9
+ =head1 Name
10
+
11
+ git-subrepo - Git Submodule Alternative
12
+
13
+ =for html
14
+ <a href="https://travis-ci.org/ingydotnet/git-subrepo"><img src="https://travis-ci.org/ingydotnet/git-subrepo.png" alt="git-subrepo"></a>
15
+
16
+ =head1 Synopsis
17
+
18
+ git subrepo -h # Help Overview
19
+
20
+ git subrepo clone <remote-url> [<subdir>]
21
+ git subrepo init <subdir>
22
+ git subrepo pull <subdir>
23
+ git subrepo push <subdir>
24
+
25
+ git subrepo fetch <subdir>
26
+ git subrepo branch <subdir>
27
+ git subrepo commit <subdir>
28
+ git subrepo config <subdir>
29
+
30
+ git subrepo status [<subdir>]
31
+ git subrepo clean <subdir>
32
+
33
+ git subrepo help [<command> | --all]
34
+ git subrepo version
35
+ git subrepo upgrade
36
+
37
+ =head1 Description
38
+
39
+ This git command "clones" an external git repo into a subdirectory of your
40
+ repo. Later on, upstream changes can be pulled in, and local changes can be
41
+ pushed back. Simple.
42
+
43
+ =head1 Benefits
44
+
45
+ This command is an improvement from C<git-submodule> and C<git-subtree>; two
46
+ other git commands with similar goals, but various problems.
47
+
48
+ It assumes there are 3 main roles of people interacting with a repo, and
49
+ attempts to serve them all well:
50
+
51
+ =over
52
+
53
+ =item * B<owner> - The person who authors/owns/maintains a repo.
54
+
55
+ =item * B<users> - People who are just using/installing the repo.
56
+
57
+ =item * B<collaborators> - People who commit code to the repo and subrepos.
58
+
59
+ =back
60
+
61
+ The C<git-subrepo> command benefits these roles in the following ways:
62
+
63
+ =over
64
+
65
+ =item * Simple and intuitive commandline usage (with tab completion).
66
+
67
+ =item * Users get your repo and all your subrepos just by cloning your repo.
68
+
69
+ =item * Users do not need to install C<git-subrepo>, ever.
70
+
71
+ =item * Collaborators do not need to install unless they want to push/pull.
72
+
73
+ =item * Collaborators know when a subdir is a subrepo (it has a C<.gitrepo> file).
74
+
75
+ =item * The C<.gitrepo> file never gets pushed back to the subrepo upstream.
76
+
77
+ =item * Well named branches and remotes are generated for manual operations.
78
+
79
+ =item * Owners do not deal with the complications of keeping submodules in sync.
80
+
81
+ =item * Subrepo repositories can contain subrepos themselves.
82
+
83
+ =item * Branching with subrepos JustWorks™.
84
+
85
+ =item * Different branches can have different subrepos in different states, etc.
86
+
87
+ =item * Moving/renaming/deleting a subrepo subdir JustWorks™.
88
+
89
+ =item * You can C<init> an existing subdirectory into a subrepo.
90
+
91
+ =item * Your git history is kept squeaky clean.
92
+
93
+ =item * Upstream history (clone/pull) is condensed into a single commit.
94
+
95
+ =item * Pulls can use a C<merge>, C<rebase> or C<force> strategies.
96
+
97
+ =item * You can see the subrepo history with C<< git log subrepo/<subdir>/fetch >>.
98
+
99
+ =item * Commits pushed back upstream are B<not> condensed (by default).
100
+
101
+ =item * Trivial to try any subrepo operations and then reset back.
102
+
103
+ =item * No configuration required.
104
+
105
+ =item * Does not introduce history that messes up other git commands.
106
+
107
+ =item * Fixes known rebase failures with C<git-subtree>.
108
+
109
+ =back
110
+
111
+ =head1 Installation
112
+
113
+ The best short answer is:
114
+
115
+ git clone https://github.com/ingydotnet/git-subrepo /path/to/git-subrepo
116
+ echo 'source /path/to/git-subrepo/.rc' >> ~/.bashrc
117
+
118
+ The complete "Installation Instructions" can be found below.
119
+
120
+ Note: git-subrepo needs a git version (> 2.7) that supports worktree:s.
121
+
122
+ =head1 Commands
123
+
124
+ All the B<subrepo> commands use names of actual Git commands and try to do
125
+ operations that are similar to their Git counterparts. They also attempt to
126
+ give similar output in an attempt to make the subrepo usage intuitive to
127
+ experienced Git users.
128
+
129
+ Please note that the commands are I<not> exact equivalents, and do not take
130
+ all the same arguments. Keep reading…
131
+
132
+ =over
133
+
134
+ =item C<< git subrepo clone <repository> [<subdir>] [-b <branch>] [-f] [-m <msg>] [-e] [--method <merge|rebase>] >>
135
+
136
+ Add a repository as a subrepo in a subdir of your repository.
137
+
138
+ This is similar in feel to C<git clone>. You just specify the remote repo url,
139
+ and optionally a sub-directory and/or branch name. The repo will be fetched
140
+ and merged into the subdir.
141
+
142
+ The subrepo history is I<squashed> into a single commit that contains the
143
+ reference information. This information is also stored in a special file
144
+ called C<< <subdir>/.gitrepo >>. The presence of this file indicates that the
145
+ directory is a subrepo.
146
+
147
+ All subsequent commands refer to the subrepo by the name of the
148
+ I<subdir>. From the subdir, all the current information about the subrepo
149
+ can be obtained.
150
+
151
+ The C<--force> option will "reclone" (completely replace) an existing subdir.
152
+
153
+ The C<--method> option will decide how the join process between branches are
154
+ performed. The default option is merge.
155
+
156
+ The C<clone> command accepts the C<--branch=> C<--edit>, C<--force> and C<--
157
+ message=> options.
158
+
159
+ =item C<< git subrepo init <subdir> [-r <remote>] [-b <branch>] [--method <merge|rebase>] >>
160
+
161
+ Turn an existing subdirectory into a subrepo.
162
+
163
+ If you want to expose a subdirectory of your project as a published subrepo,
164
+ this command will do that. It will split out the content of a normal
165
+ subdirectory into a branch and start tracking it as a subrepo. Afterwards your
166
+ original repo will look exactly the same except that there will be a C<<
167
+ <subdir>/.gitrepo >> file.
168
+
169
+ If you specify the C<--remote> (and optionally the C<--branch>) option, the
170
+ values will be added to the C<< <subdir>/.gitrepo >> file. The C<--remote>
171
+ option is the upstream URL, and the C<--branch> option is the upstream branch
172
+ to push to. These values will be needed to do a C<git subrepo push> command,
173
+ but they can be provided later on the C<push> command (and saved to C<<
174
+ <subdir>/.gitrepo >> if you also specify the C<--update> option).
175
+
176
+ Note: You will need to create the empty upstream repo and push to it on your
177
+ own, using C<< git subrepo push <subdir> >>.
178
+
179
+ The C<--method> option will decide how the join process between branches are
180
+ performed. The default option is merge.
181
+
182
+ The C<init> command accepts the C<--branch=> and C<--remote=> options.
183
+
184
+ =item C<< git subrepo pull <subdir>|--all [-M|-R|-f] [-m <msg>] [-e] [-b <branch>] [-r <remote>] [-u] >>
185
+
186
+ Update the subrepo subdir with the latest upstream changes.
187
+
188
+ The C<pull> command fetches the latest content from the remote branch pointed
189
+ to by the subrepo's C<.gitrepo> file, and then tries to merge the changes into
190
+ the corresponding subdir. It does this by making a branch of the local commits
191
+ to the subdir and then merging or rebasing (see below) it with the fetched
192
+ upstream content. After the merge, the content of the new branch replaces your
193
+ subdir, the C<.gitrepo> file is updated and a single 'pull' commit is added to
194
+ your mainline history.
195
+
196
+ The C<pull> command will attempt to do the following commands in one go:
197
+
198
+ git subrepo fetch <subdir>
199
+ git subrepo branch <subdir>
200
+ git merge/rebase subrepo/<subdir>/fetch subrepo/<subdir>
201
+ git subrepo commit <subdir>
202
+ # Only needed for a consequential push:
203
+ git update-ref refs/subrepo/<subdir>/pull subrepo/<subdir>
204
+
205
+ In other words, you could do all the above commands yourself, for the same
206
+ effect. If any of the commands fail, subrepo will stop and tell you to finish
207
+ this by hand. Generally a failure would be in the merge or rebase part, where
208
+ conflicts can happen. Since Git has lots of ways to resolve conflicts to your
209
+ personal tastes, the subrepo command defers to letting you do this by hand.
210
+
211
+ When pulling new data, the method selected in clone/init is used. This has no
212
+ effect on the final result of the pull, since it becomes a single commit. But
213
+ it does affect the resulting C<< subrepo/<subdir> >> branch, which is often
214
+ used for a subrepo C<push> command. See 'push' below for more information. If
215
+ you want to change the method you can use the C<config> command for this.
216
+
217
+ When you pull you can assume a fast-forward strategy (default) or you can
218
+ specify a C<--rebase>, C<--merge> or C<--force> strategy. The latter is the
219
+ same as a C<clone --force> operation, using the current remote and branch.
220
+
221
+ Like the C<clone> command, C<pull> will squash all the changes (since the last
222
+ pull or clone) into one commit. This keeps your mainline history nice and
223
+ clean. You can easily see the subrepo's history with the C<git log> command:
224
+
225
+ git log refs/subrepo/<subdir>/fetch
226
+
227
+ The set of commands used above are described in detail below.
228
+
229
+ The C<pull> command accepts the C<--all>, C<--branch=>, C<--edit>, C<--force>,
230
+ C<--message=>, C<--remote=> and C<--update> options.
231
+
232
+ =item C<< git subrepo push <subdir>|--all [<branch>] [-r <remote>] [-b <branch>] [-M|-R] [-u] [-f] [-s] [-N] >>
233
+
234
+ Push a properly merged subrepo branch back upstream.
235
+
236
+ This command takes the subrepo branch from a successful pull command and
237
+ pushes the history back to its designated remote and branch. You can also use
238
+ the C<branch> command and merge things yourself before pushing if you want to
239
+ (although that is probably a rare use case).
240
+
241
+ The C<push> command requires a branch that has been properly merged/rebased
242
+ with the upstream HEAD (unless the upstream HEAD is empty, which is common
243
+ when doing a first C<push> after an C<init>). That means the upstream HEAD is
244
+ one of the commits in the branch.
245
+
246
+ By default the branch ref C<< refs/subrepo/<subdir>/pull >> will be pushed,
247
+ but you can specify a (properly merged) branch to push.
248
+
249
+ After that, the C<push> command just checks that the branch contains the
250
+ upstream HEAD and then pushes it upstream.
251
+
252
+ The C<--force> option will do a force push. Force pushes are typically
253
+ discouraged. Only use this option if you fully understand it. (The C<--force>
254
+ option will NOT check for a proper merge. ANY branch will be force pushed!)
255
+
256
+ The C<push> command accepts the C<--all>, C<--branch=>, C<--dry-run>, C<--
257
+ force>, C<--merge>, C<--rebase>, C<--remote=>, C<--squash> and C<--
258
+ update> options.
259
+
260
+ =item C<< git subrepo fetch <subdir>|--all [-r <remote>] [-b <branch>] >>
261
+
262
+ Fetch the remote/upstream content for a subrepo.
263
+
264
+ It will create a Git reference called C<< subrepo/<subdir>/fetch >> that
265
+ points at the same commit as C<FETCH_HEAD>. It will also create a remote
266
+ called C<< subrepo/<subdir> >>. These are temporary and you can easily remove
267
+ them with the subrepo C<clean> command.
268
+
269
+ The C<fetch> command accepts the C<--all>, C<--branch=> and C<--
270
+ remote=> options.
271
+
272
+ =item C<< git subrepo branch <subdir>|--all [-f] [-F] >>
273
+
274
+ Create a branch with local subrepo commits.
275
+
276
+ Scan the history of the mainline for all the commits that affect the C<subdir>
277
+ and create a new branch from them called C<< subrepo/<subdir> >>.
278
+
279
+ This is useful for doing C<pull> and C<push> commands by hand.
280
+
281
+ Use the C<--force> option to write over an existing C<< subrepo/<subdir>
282
+ >> branch.
283
+
284
+ The C<branch> command accepts the C<--all>, C<--fetch> and C<--force> options.
285
+
286
+ =item C<< git subrepo commit <subdir> [<subrepo-ref>] [-m <msg>] [-e] [-f] [-F] >>
287
+
288
+ Add subrepo branch to current history as a single commit.
289
+
290
+ This command is generally used after a hand-merge. You have done a C<subrepo
291
+ branch> and merged (rebased) it with the upstream. This command takes the HEAD
292
+ of that branch, puts its content into the subrepo subdir and adds a new commit
293
+ for it to the top of your mainline history.
294
+
295
+ This command requires that the upstream HEAD be in the C<< subrepo/<subdir> >>
296
+ branch history. That way the same branch can push upstream. Use the C<--force>
297
+ option to commit anyway.
298
+
299
+ The C<commit> command accepts the C<--edit>, C<--fetch>, C<--force> and C<--
300
+ message=> options.
301
+
302
+ =item C<< git subrepo status [<subdir>|--all|--ALL] [-F] [-q|-v] >>
303
+
304
+ Get the status of a subrepo. Uses the C<--all> option by default. If the C<--
305
+ quiet> flag is used, just print the subrepo names, one per line.
306
+
307
+ The C<--verbose> option will show all the recent local and upstream commits.
308
+
309
+ Use C<--ALL> to show the subrepos of the subrepos (ie the
310
+ "subsubrepos"), if any.
311
+
312
+ The C<status> command accepts the C<--all>, C<--ALL>, C<--fetch>, C<--quiet>
313
+ and C<--verbose> options.
314
+
315
+ =item C<< git subrepo clean <subdir>|--all|--ALL [-f] >>
316
+
317
+ Remove artifacts created by C<fetch> and C<branch> commands.
318
+
319
+ The C<fetch> and C<branch> operations (and other commands that call them)
320
+ create temporary things like refs, branches and remotes. This command removes
321
+ all those things.
322
+
323
+ Use C<--force> to remove refs. Refs are not removed by default because they
324
+ are sometimes needed between commands.
325
+
326
+ Use C<--all> to clean up after all the current subrepos. Sometimes you might
327
+ change to a branch where a subrepo doesn't exist, and then C<--all> won't find
328
+ it. Use C<--ALL> to remove any artifacts that were ever created by subrepo.
329
+
330
+ To remove ALL subrepo artifacts:
331
+
332
+ git subrepo clean --ALL --force
333
+
334
+ The C<clean> command accepts the C<--all>, C<--ALL>, and C<--force> options.
335
+
336
+ =item C<< git subrepo config <subdir> <option> [<value>] [-f] >>
337
+
338
+ Read or update configuration values in the subdir/.gitrepo file.
339
+
340
+ Because most of the values stored in the .gitrepo file are generated you
341
+ will need to use C<--force> if you want to change anything else then the
342
+ C<method> option.
343
+
344
+ Example to update the C<method> option for a subrepo:
345
+
346
+ git subrepo config foo method rebase
347
+
348
+ =item C<< git subrepo help [<command>|--all] >>
349
+
350
+ Same as C<git help subrepo>. Will launch the manpage. For the shorter usage,
351
+ use C<git subrepo -h>.
352
+
353
+ Use C<< git subrepo help <command> >> to get help for a specific command. Use
354
+ C<--all> to get a summary of all commands.
355
+
356
+ The C<help> command accepts the C<--all> option.
357
+
358
+ =item C<git subrepo version [-q|-v]>
359
+
360
+ This command will display version information about git-subrepo and its
361
+ environment. For just the version number, use C<git subrepo --version>. Use
362
+ C<--verbose> for more version info, and C<--quiet> for less.
363
+
364
+ The C<version> command accepts the C<--quiet> and C<--verbose> options.
365
+
366
+ =item C<git subrepo upgrade>
367
+
368
+ Upgrade the C<git-subrepo> software itself. This simply does a C<git pull>
369
+ on the git repository that the code is running from. It only works if you
370
+ are on the C<master> branch. It won't work if you installed C<git-subrepo>
371
+ using C<make install>; in that case you'll need to C<make install> from the
372
+ latest code.
373
+
374
+ =back
375
+
376
+ =head1 Command Options
377
+
378
+ =over
379
+
380
+ =item C<-h>
381
+
382
+ Show a brief view of the commands and options.
383
+
384
+ =item C<--help>
385
+
386
+ Gives an overview of the help options available for the subrepo command.
387
+
388
+ =item C<--version>
389
+
390
+ Print the git-subrepo version. Just the version number. Try the C<version>
391
+ command for more version info.
392
+
393
+ =item C<--all> (C<-a>)
394
+
395
+ If you have multiple subrepos, issue the command to all of them (if
396
+ applicable).
397
+
398
+ =item C<--ALL> (C<-A>)
399
+
400
+ If you have subrepos that also have subrepos themselves, issue the command to
401
+ ALL of them. Note that the C<--ALL> option only works for a subset of the
402
+ commands that C<--all> works for.
403
+
404
+ =item C<< --branch=<branch-name> >> (C<< -b <branch-name> >>)
405
+
406
+ Use a different upstream branch-name than the remote HEAD or the one saved in
407
+ C<.gitrepo> locally.
408
+
409
+ =item C<--dry-run> (C<-N>)
410
+
411
+ For the push command, do everything up until the push and then print out the
412
+ actual C<git push> command needed to finish the operation.
413
+
414
+ =item C<--edit> (C<-e>)
415
+
416
+ Edit the commit message before committing.
417
+
418
+ =item C<--fetch> (C<-F>)
419
+
420
+ Use this option to fetch the upstream commits, before running the command.
421
+
422
+ =item C<--force> (C<-f>)
423
+
424
+ Use this option to force certain commands that fail in the general case.
425
+
426
+ NOTE: The C<--force> option means different things for different commands.
427
+ Read the command specific doc for the exact meaning.
428
+
429
+ =item C<--merge> (C<-M>)
430
+
431
+ Use a C<merge> strategy to include upstream subrepo commits on a pull (or
432
+ setup for push).
433
+
434
+ =item C<< --message=<message> >> (C<< -m <message> >>)
435
+
436
+ Specify your own commit message on the command line.
437
+
438
+ =item C<--rebase> (C<-R>)
439
+
440
+ Use a C<rebase> strategy to include upstream subrepo commits on a pull (or
441
+ setup for push).
442
+
443
+ =item C<< --remote=<remote-url> >> (C<< -r <remote-url> >>)
444
+
445
+ Use a different remote-url than the one saved in C<.gitrepo> locally.
446
+
447
+ =item C<--squash> (C<-s>)
448
+
449
+ Squash all commits on a push into one new commit.
450
+
451
+ =item C<--update> (C<-u>)
452
+
453
+ If C<--branch> or C<--remote> are used, and the command updates the
454
+ C<.gitrepo> file, include these values to the update.
455
+
456
+ =back
457
+
458
+ =head1 Output Options
459
+
460
+ =over
461
+
462
+ =item C<--quiet> (C<-q>)
463
+
464
+ Print as little info as possible. Applicable to most commands.
465
+
466
+ =item C<--verbose> (C<-v>)
467
+
468
+ Print more information about the command execution and results. Applicable to
469
+ most commands.
470
+
471
+ =item C<--debug> (C<-d>)
472
+
473
+ Show the actual git (and other) commands being executed under the hood.
474
+ Applicable to most commands.
475
+
476
+ =item C<--DEBUG> (C<-x>)
477
+
478
+ Use the Bash C<set -x> option which prints every command before it is
479
+ run. VERY noisy, but extremely useful in deep debugging. Applicable to
480
+ all commands.
481
+
482
+ =back
483
+
484
+ =head1 Environment Variables
485
+
486
+ The C<git-subrepo> command exports and honors some environment variables:
487
+
488
+ =over
489
+
490
+ =item C<GIT_SUBREPO_ROOT>
491
+
492
+ This is set by the C<.rc> file, if you use that method to install / enable C<git-
493
+ subrepo>. It contains the path of the C<git-subrepo> repository.
494
+
495
+ =item C<GIT_SUBREPO_RUNNING>
496
+
497
+ This variable is exported when C<git-subrepo> is running. It is set to the pid
498
+ of the C<git-subrepo> process that is running. Other processes, like git hooks
499
+ for instance, can use this information to adjust accordingly.
500
+
501
+ =item C<GIT_SUBREPO_COMMAND>
502
+
503
+ This variable is exported when C<git-subrepo> is running. It is set to the
504
+ name of the C<git-subrepo> subcommand that is running.
505
+
506
+ =item C<GIT_SUBREPO_PAGER>
507
+
508
+ Use this to specify the pager to use for long output commands. Defaults to
509
+ C<$PAGER> or C<less>.
510
+
511
+ =item C<GIT_SUBREPO_QUIET>
512
+
513
+ Set this for quiet (C<-q>) output.
514
+
515
+ =item C<GIT_SUBREPO_VERBOSE>
516
+
517
+ Set this for verbose (C<-v>) output.
518
+
519
+ =item C<GIT_SUBREPO_DEBUG>
520
+
521
+ Set this for debugging (C<-d>) output.
522
+
523
+ =back
524
+
525
+ =head1 Installation Instructions
526
+
527
+ There are currently 3 ways to install C<git-subrepo>. For all of them you need
528
+ to get the source code from GitHub:
529
+
530
+ git clone https://github.com/ingydotnet/git-subrepo /path/to/git-subrepo
531
+
532
+ The first installation method is preferred: C<source> the C<.rc> file. Just
533
+ add a line like this one to your shell startup script:
534
+
535
+ source /path/to/git-subrepo/.rc
536
+
537
+ That will modify your C<PATH> and C<MANPATH>, and also enable command
538
+ completion.
539
+
540
+ The second method is to do these things by hand. This might afford you more
541
+ control of your shell environment. Simply add the C<lib> and C<man>
542
+ directories to your C<PATH> and C<MANPATH>:
543
+
544
+ export GIT_SUBREPO_ROOT="/path/to/git-subrepo"
545
+ export PATH="/path/to/git-subrepo/lib:$PATH"
546
+ export MANPATH="/path/to/git-subrepo/man:$MANPATH"
547
+
548
+ See below for info on how to turn on Command Completion.
549
+
550
+ The third method is a standard system install, which puts C<git-subrepo> next
551
+ to your other git commands:
552
+
553
+ make install # Possibly with 'sudo'
554
+
555
+ This method does not account for upgrading and command completion yet.
556
+
557
+ =head2 Windows
558
+
559
+ This command is known to work in these Windows environments:
560
+
561
+ =over
562
+
563
+ =item * Git for Windows -- L<https://git-for-windows.github.io/>
564
+
565
+ =item * Babun -- L<http://babun.github.io/>
566
+
567
+ =item * Cygwin -- L<https://www.cygwin.com/>
568
+
569
+ =back
570
+
571
+ Let us know if there are others that it works (or doesn't work) in.
572
+
573
+ =head1 Testing
574
+
575
+ The C<git-subrepo> repository comes with a extensive test suite. You can
576
+ run it with:
577
+
578
+ make test
579
+
580
+ or if you don't have C<make> on your system:
581
+
582
+ prove -v test
583
+
584
+ =head1 Upgrading
585
+
586
+ If you used the C<.rc> or C<PATH> method of installation, just run this to
587
+ upgrade C<git-subrepo>:
588
+
589
+ git subrepo upgrade
590
+
591
+ Or (same thing):
592
+
593
+ cd /path/to/git-subrepo
594
+ git pull
595
+
596
+ If you used C<make install> method, then run this again (after C<git pull>):
597
+
598
+ make install # Possibly with 'sudo'
599
+
600
+ =head1 Command Completion
601
+
602
+ The C<git subrepo> command supports C<< <TAB> >>-based command completion. If
603
+ you don't use the C<.rc> script (see Installation, above), you'll need to
604
+ enable this manually to use it.
605
+
606
+ =head2 In Bash
607
+
608
+ If your Bash setup does not already provide command completion for Git, you'll
609
+ need to enable that first:
610
+
611
+ source <Git completion script>
612
+
613
+ On your system, the Git completion script might be found at any of the
614
+ following locations (or somewhere else that we don't know about):
615
+
616
+ =over
617
+
618
+ =item * C</etc/bash_completion.d/git>
619
+
620
+ =item * C</usr/share/bash-completion/git>
621
+
622
+ =item * C</usr/share/bash-completion/completions/git>
623
+
624
+ =item * C</opt/local/share/bash-completion/completions/git>
625
+
626
+ =item * C</usr/local/etc/bash_completion.d/git>
627
+
628
+ =item * C<~/.homebrew/etc/bash_completion.d/git>
629
+
630
+ =back
631
+
632
+ In case you can't find any of these, this repository contains a copy of the
633
+ Git completion script:
634
+
635
+ source /path/to/git-subrepo/share/git-completion.bash
636
+
637
+ Once Git completion is enabled (whether you needed to do that manually or
638
+ not), you can turn on C<git-subrepo> completion with a command like this:
639
+
640
+ source /path/to/git-subrepo/share/completion.bash
641
+
642
+ =head2 In zsh
643
+
644
+ In the Z shell (zsh), you can manually enable C<git-subrepo> completion by
645
+ adding the following line to your C<~/.zshrc>, B<before> the C<compinit>
646
+ function is called:
647
+
648
+ fpath=('/path/to/git-subrepo/share/zsh-completion' $fpath)
649
+
650
+ =head1 Status
651
+
652
+ The git-subrepo command has been in use for well over a year and seems to get
653
+ the job done. Development is still ongoing but mostly just for fixing bugs.
654
+
655
+ Trying subrepo out is simple and painless (this is not C<git submodule>).
656
+ Nothing is permanent (if you do not push to shared remotes). ie You can always
657
+ play around and reset back to the beginning without pain.
658
+
659
+ This command has a test suite (run C<make test>), but surely has many bugs. If
660
+ you have expertise with Git and subcommands, please review the code, and file
661
+ issues on anything that seems wrong.
662
+
663
+ If you want to chat about the C<git-subrepo> command, join C<#gitcommands> on
664
+ C<irc.freenode.net>.
665
+
666
+ =head1 Notes
667
+
668
+ =over
669
+
670
+ =item * Works on POSIX systems: Linux, BSD, OSX, etc.
671
+
672
+ =item * Works on various Windows environments. See "Windows" section above.
673
+
674
+ =item * The C<git-subrepo> repo itself has 2 subrepos under the C<ext/> subdirectory.
675
+
676
+ =item * Written in (very modern) Bash, with full test suite. Take a look.
677
+
678
+ =item * A C<.gitrepo> file never is in the top level dir (next to a C<.git/> dir).
679
+
680
+ =back
681
+
682
+ =head1 Authors
683
+
684
+ =over
685
+
686
+ =item * Ingy döt Net <ingy@ingy.net>
687
+
688
+ =item * Magnus Carlsson <grimmymail@gmail.com>
689
+
690
+ =back
691
+
692
+ =head1 License and Copyright
693
+
694
+ The MIT License (MIT)
695
+
696
+ Copyright (c) 2013-2020 Ingy döt Net
697
+
698
+ =cut