eac_git 0.1.0 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,10 @@
1
+ - https://github.com/nothingmuch/git-svn-abandon
2
+ - https://github.com/schacon?tab=repositories
3
+ - https://github.com/jbalogh/git-tools
4
+ - https://github.com/wesabe/git-tools
5
+ - https://github.com/timcharper/git-helpers
6
+ - https://github.com/schacon/git-pulls
7
+ - https://github.com/node-gh/gh
8
+ - https://github.com/splitbrain/git-pull-request
9
+ - https://github.com/mloughran/git-cleanup
10
+ - https://github.com/seveas/git-hub
@@ -0,0 +1,39 @@
1
+ = `git-hub` Design Specification
2
+
3
+ == Main Commands
4
+
5
+ - `clone`
6
+
7
+ git subrepo clone <git-url> <subdir> [<options>]
8
+
9
+ - `pull`
10
+
11
+ - `push`
12
+
13
+ == Worker Commands
14
+
15
+ - `fetch`
16
+
17
+ git subrepo fetch <subdir>
18
+
19
+ - `branch`
20
+
21
+ - `checkout`
22
+
23
+ - `commit`
24
+
25
+ - `reset`
26
+
27
+ == Info Commands
28
+
29
+ - `status`
30
+
31
+ - `log`
32
+
33
+ == Other Commands
34
+
35
+ - `clean`
36
+
37
+ - `help`
38
+
39
+ - `version`
@@ -0,0 +1,57 @@
1
+ == git subrepo clone git@genius --branch=bob ext/genius
2
+
3
+ - create orphan branch repo/genius
4
+ - fetch git@genius --branch=bob
5
+ - create local branch repo/genius
6
+ - checkout repo/genius into ext/genius
7
+ - SYNC-DANCE:
8
+ - add ext/genius/.gitrepo
9
+ - commit the add and prune the commit
10
+ - merge the pruned commit into mianline
11
+
12
+ == git subrepo pull ext/genius
13
+
14
+ - checkout ext/genius
15
+ - fetch git@genius --branch=bob
16
+ - merge/rebase FETCH_HEAD
17
+ - commit if merge successful
18
+ - checkout original branch
19
+ - SYNC-DANCE
20
+
21
+ == git subrepo branch ext/genius
22
+ - filter-branch subdir ext/genius
23
+ - filter-branch 'rm .gitrepo'
24
+ - add parent of original
25
+ - name the commit subrepo/ext/genius
26
+
27
+ == git subrepo checkout ext/genius
28
+ - subrepo branch ext/genius
29
+ - checkout subrepo/ext/genius
30
+
31
+ == git subrepo push ext/genius
32
+ - subrepo branch ext/genius
33
+ - checkout repo/genius
34
+ - merge/rebase subrepo/ext/genius
35
+ - push repo/genius git@genius/bob
36
+ - checkout original
37
+
38
+
39
+ = Commands =
40
+
41
+ git subrepo clone git@github.com:ingydotnet/bashplus.git
42
+ git subrepo clone git@github.com:ingydotnet/bashplus.git ext/bashplus
43
+ git subrepo clone git@github.com:ingydotnet/bashplus.git --branch=devel
44
+ git subrepo clone git@github.com:ingydotnet/bashplus.git --reclone
45
+
46
+
47
+ git subrepo pull git@github.com:ingydotnet/bashplus.git
48
+ git subrepo pull git@github.com:ingydotnet/bashplus.git --branch=master
49
+ git subrepo pull git@github.com:ingydotnet/bashplus.git --rebase
50
+
51
+ git subrepo branch ext/bashplus # create refs/heads/subrepo/ext/bashplus
52
+
53
+ git subrepo checkout ext/bashplus
54
+
55
+ git subrepo push ext/bashplus
56
+
57
+
@@ -0,0 +1,55 @@
1
+ == Next
2
+ - Write test for push after init
3
+ - With and without --remote
4
+ - With --update
5
+ - Write tests for --update
6
+
7
+ == Development
8
+
9
+ - Add version commit id to cmdver in .gitrepo.
10
+ - Update Makefile to install:
11
+ - git-subrepo.d/remote
12
+ - git-subrepo.d/commit
13
+
14
+ + Add remote-url and remote-branch on fetch
15
+ - unless config.subrepo.auto-remote-add == false
16
+ - unless config.subrepo.auto-branch-add == false
17
+
18
+ - Write more tests:
19
+ - Make simple fixtures
20
+ - Multiple push sessions
21
+ - Tests for reported rebase errors and other subtree badness
22
+
23
+ - Make the 'clean' command remove grafts
24
+
25
+ - Resolve outstanding github issues:
26
+ - Allow commands from any subdir.
27
+
28
+ - Update VERSION to 0.1.1
29
+ - Tag when ready.
30
+
31
+ - When .gitrepo is stable:
32
+ - Delete and re-clone all subrepos in all repos using them
33
+
34
+ - Rewrite the Intro doc.
35
+
36
+ == Promotion
37
+
38
+ - Git Commands
39
+ - #git-commands
40
+ - github.com/git-commands
41
+ - Fork projects
42
+ - git-commands.hacktive.com
43
+ - Make a CogWeb site
44
+
45
+ - Invent a good symbolic system for dags
46
+ - main and sub repo
47
+ - users: owner, user, collab
48
+ - commits: upstream sr head, local sr head, clone, pull, gitrepo
49
+
50
+ owner/main: A-----B
51
+ owner/subr: S-----T
52
+ git subrepo clone owner/subr foo
53
+ A-----B-----C
54
+ /
55
+ T'--T'+
@@ -0,0 +1,137 @@
1
+ git-subrepo Design
2
+ ==================
3
+
4
+ How the subrepo commands should work.
5
+
6
+ Glossary:
7
+
8
+ - `subrepo` :: An external repository integrated as a repo subdirectory
9
+ - `subdir` :: The directory in the work tree where the subrepo lives
10
+ - `upstream` :: The remote repo that the subrepo is tracking
11
+ - `local` :: The local parts of the subrepo
12
+ - `.gitrepo` :: The subrepo state file
13
+ - `remote` :: The subrepo url
14
+ - `branch` :: The remote branch the subrepo is tracking
15
+ - `commit` :: The upstream commit id that we last synced to
16
+ - `former` :: The local commit that we last synced to
17
+
18
+ == clone
19
+
20
+ This is the action that adds a new subrepo. It feels very much like a clone,
21
+ so we call it that.
22
+
23
+ Usages:
24
+
25
+ # Add a subrepo into a subdir (track remote HEAD branch):
26
+ git subrepo clone <remote> <subdir>
27
+ # Guess subdir from remote url:
28
+ git subrepo clone <remote>
29
+ # Use a named branch instead of the remote HEAD:
30
+ git subrepo clone <remote> [<subdir>] -b <branch>
31
+
32
+ Steps:
33
+
34
+ * Assert clean, and chdir to root (adjusting subdir)
35
+ * Determine the remote HEAD
36
+ * Else error, branch (-b) needed
37
+ * Fetch the remote branch commits
38
+ * Subtree merge the remote subrepo history into the subdir
39
+ * Squash the history to a single commit
40
+ * Merge the subtree commit into the mainline HEAD
41
+ * Add a .gitrepo file to the subdir
42
+ * Amend the .gitrepo into the HEAD merge commit
43
+ * Create a branch .git/refs/subrepo/remote/<subdir>
44
+ * Add a remote called subrepo/<subdir>
45
+
46
+ == pull
47
+
48
+ Fetch and merge the remote content. This could be a single operation, or may
49
+ require a manual process: (see checkout)
50
+
51
+ Usages:
52
+
53
+ # Fetch and rebase subdir/subrepo:
54
+ git subrepo pull --rebase subdir
55
+ # Strategies: --rebase --ours --theirs --merge (recursive):
56
+ git subrepo pull --<merge-strategy> subdir
57
+ # Pull all the subrepos:
58
+ git subrepo pull --<strategy> --all
59
+ # Change the tracking branch and pull it:
60
+ git subrepo pull --<strategy> -b <branch> <subdir>
61
+ # Pull in the hand merged branch:
62
+ # git subrepo pull <subdir>
63
+
64
+ Steps:
65
+
66
+ * Assert clean, and chdir to root (adjusting subdir)
67
+ * Fetch the remote branch content
68
+ * Update remotes and the refs in .git/
69
+ * The might not be the same repo that did the clone
70
+ * If not hand merged
71
+ * Create a branch called subrepo/<subdir>
72
+ * Checkout the new branch
73
+ * Apply the merge strategy to the remote branch
74
+ * If not clean
75
+ * Error message
76
+ * Reset to starting state
77
+ * Subtree merge the subrepo/<subdir> branch into repo
78
+ git subrepo clone <remote> <subdir>
79
+ * Squash the upstream history
80
+ * Merge the subtree into mainline
81
+ * Update the .gitrepo file
82
+ * Amend .gitrepo into HEAD
83
+ * Delete the subrepo/<subdir> branch
84
+
85
+ == push
86
+
87
+ Push a merged subrepo history to the remote. This could be a single operation,
88
+ or may require a manual process.
89
+
90
+ Usages:
91
+
92
+ # Fetch, apply strategy, push to remote:
93
+ git subrepo push <subdir>
94
+ # Do all subrepos:
95
+ git subrepo push --all
96
+
97
+ Steps:
98
+
99
+ * Assert clean, and chdir to root (adjusting subdir)
100
+ * Update remotes and the refs in .git/
101
+ * Fetch the remote branch content
102
+ * Make sure we have pulled the latest remote changes
103
+ * Checkout subrepo/<subdir> branch
104
+ * Rebase the local change s on top
105
+ * Push it to subrepo/<subdir> remote
106
+
107
+ == checkout
108
+
109
+ Create a branch of the local changes to the subrepo and checkout it. Also
110
+ fetch the remote tracking branch, so it can can be used for merges. This
111
+ command is used to do a pull/merge by hand. After you merge, use the `pull`
112
+ command to finish up.
113
+
114
+ Usages:
115
+
116
+ # Checkout a subdir/subrepo
117
+ git checkout <subdir>
118
+
119
+ Steps:
120
+
121
+ * Assert clean, and chdir to root (adjusting subdir)
122
+ * Assert repo is on a branch
123
+ * Update remotes and the refs in .git/
124
+ * Fetch the remote branch content
125
+ * Create a branch of local subrepo changes subrepo/local/<subdir>
126
+ * Checkout the new branch
127
+
128
+ == status
129
+
130
+ Give a full status of specific subrepos or all of them.
131
+
132
+ Usages:
133
+
134
+ # Get status for all subrepos:
135
+ git subrepo status
136
+ # Get status for specific subrepos:
137
+ git subrepo status <subdir> [<subdir> ...]
@@ -0,0 +1,85 @@
1
+ git-subrepo Design
2
+ ==================
3
+
4
+ This document details wow the git-subrepo commands should work.
5
+
6
+ Glossary:
7
+
8
+ - `subrepo` :: An external repository integrated as a repo subdirectory
9
+ - `subdir` :: The directory in the work tree where the subrepo lives
10
+ - `upstream` :: The remote repo that the subrepo is tracking
11
+ - `local` :: The local parts of the subrepo
12
+ - `.gitrepo` :: The subrepo state file
13
+ - `remote` :: The subrepo url
14
+ - `branch` :: The remote branch the subrepo is tracking
15
+ - `commit` :: The upstream commit id that we last synced to
16
+ - `former` :: The local commit that we last synced to
17
+
18
+ = Commands and usages:
19
+
20
+ There are 4 main commands:
21
+
22
+ * git subrepo clone
23
+ * git subrepo pull
24
+ * git subrepo push
25
+ * git subrepo checkout
26
+
27
+ # Clone forms:
28
+ git subrepo clone git@github.com:you/foo.git
29
+ git subrepo clone git@github.com:you/foo.git ext/subfoo
30
+ git subrepo clone git@github.com:you/foo.git -b alternate-branch
31
+
32
+ # Single command pull:
33
+ git subrepo pull --rebase ext/foo
34
+ git subrepo pull --merge ext/foo -b remote-branch
35
+ git subrepo pull --ours ext/foo -B remote-branch # change .gitrepo
36
+ git subrepo pull --rebase --all
37
+
38
+ # Manual pull:
39
+ git subrepo checkout ext/foo
40
+ git rebase subrepo/remote/ext/foo subrepo/ext/foo
41
+ make test
42
+ git subrepo pull ext/foo --continue
43
+
44
+ # Push forms:
45
+ git subrepo push ext/foo
46
+ git subrepo push ext/foo -b remote-branch
47
+ git subrepo push ext/foo -B remote-branch
48
+ git subrepo push --all
49
+
50
+ # Manual push:
51
+ git subrepo checkout ext/foo --rebase
52
+ <maybe rewrite commit info>
53
+ make test
54
+ git subrepo push ext/foo --continue
55
+
56
+ # Checkout forms:
57
+ git subrepo checkout ext/foo
58
+ git subrepo checkout ext/foo --<merge-straegy>
59
+ git subrepo checkout ext/foo --fetch
60
+ git subrepo checkout -b create-local-branch-name
61
+ git subrepo checkout --all
62
+
63
+ = Command Logic
64
+
65
+ This section goes over all the things that a command needs to do:
66
+
67
+ == Setup
68
+
69
+ There are certain steps that each command must do first:
70
+
71
+ * Assert that the system commands and git version are correct.
72
+ * Assert that the repository is in a clean state.
73
+ * Assert that the repo is on a branch.
74
+ * Assert that the current dir is top level of repo.
75
+ * Assert the command arguments are valid.
76
+ * Assert the subdir is a valid subrepo dir.
77
+ * For `clone` make sure subdir does not exist yet.
78
+ * Read the .gitrepo file (not for clone).
79
+ * For `clone`, make sure we know what upstream branch to use.
80
+ * Note the starting point (branch and commit).
81
+
82
+ == Clone command:
83
+
84
+ * Fetch upstream content for our tracking branch.
85
+
@@ -0,0 +1,38 @@
1
+ #!/bin/bash
2
+
3
+ set -ex
4
+ cat $0 # Show this script in the output
5
+
6
+ REPO=${1:-ingydotnet/djson-pm}
7
+ REPODIR="${REPO#*/}"
8
+ SUBDIR=${2:-test}
9
+ SUBREPO=$REPO-$SUBDIR
10
+ SUBREPODIR="${SUBREPO#*/}"
11
+
12
+ git hub repo-delete "$SUBREPO" || true
13
+ rm -fr "$REPODIR"
14
+ git hub clone "$REPO"
15
+ (
16
+ exit
17
+ cd "$REPODIR"
18
+ git subrepo init test -r "git@github.com:$SUBREPO" # -b foo
19
+ git hub repo-new "$SUBREPO"
20
+ git hub repo "$SUBREPO"
21
+ cat "$SUBDIR/.gitrepo"
22
+ git subrepo push "$SUBDIR"
23
+ git subrepo status "$SUBDIR"
24
+ git hub clone "$SUBREPO"
25
+ [[ -e "$SUBREPODIR/decode.t" ]] && echo PASS || echo FAIL
26
+ )
27
+ (
28
+ cd "$REPODIR"
29
+ git subrepo init test
30
+ git hub repo-new "$SUBREPO"
31
+ git hub repo "$SUBREPO"
32
+ cat "$SUBDIR/.gitrepo"
33
+ git subrepo push -u "$SUBDIR" -r "git@github.com:$SUBREPO" -b foo
34
+ git subrepo status "$SUBDIR"
35
+ git hub clone "$SUBREPO"
36
+ [[ -e "$SUBREPODIR/decode.t" ]] && echo PASS || echo FAIL
37
+ bash -i
38
+ )
@@ -0,0 +1,18 @@
1
+ == Pull Dancing
2
+
3
+ (
4
+ git sr pull --rebase ext/bar
5
+ )
6
+
7
+ (
8
+ git sr checkout ext/bar --rebase
9
+ make test
10
+ git sr pull --continue
11
+ )
12
+
13
+ (
14
+ git sr checkout ext/bar
15
+ git rebase subrepo/remote/ext/bar
16
+ make test
17
+ git sr pull --continue
18
+ )