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.
- checksums.yaml +4 -4
- data/lib/eac_git/executables.rb +24 -4
- data/lib/eac_git/local.rb +5 -1
- data/lib/eac_git/local/dirty_files.rb +37 -0
- data/lib/eac_git/rspec.rb +17 -0
- data/lib/eac_git/version.rb +1 -1
- data/vendor/git-subrepo/Changes +110 -0
- data/vendor/git-subrepo/Intro.pod +509 -0
- data/vendor/git-subrepo/License +21 -0
- data/vendor/git-subrepo/Makefile +82 -0
- data/vendor/git-subrepo/Meta +28 -0
- data/vendor/git-subrepo/ReadMe.pod +698 -0
- data/vendor/git-subrepo/doc/comparison.swim +35 -0
- data/vendor/git-subrepo/doc/git-subrepo.swim +608 -0
- data/vendor/git-subrepo/doc/intro-to-subrepo.swim +387 -0
- data/vendor/git-subrepo/ext/bashplus/Changes +15 -0
- data/vendor/git-subrepo/ext/bashplus/License +21 -0
- data/vendor/git-subrepo/ext/bashplus/Makefile +45 -0
- data/vendor/git-subrepo/ext/bashplus/Meta +28 -0
- data/vendor/git-subrepo/ext/bashplus/ReadMe.pod +77 -0
- data/vendor/git-subrepo/ext/bashplus/bin/bash+ +43 -0
- data/vendor/git-subrepo/ext/bashplus/doc/bash+.swim +61 -0
- data/vendor/git-subrepo/ext/bashplus/lib/bash+.bash +92 -0
- data/vendor/git-subrepo/ext/bashplus/man/man1/bash+.1 +134 -0
- data/vendor/git-subrepo/ext/bashplus/man/man3/bash+.3 +134 -0
- data/vendor/git-subrepo/ext/bashplus/test/base.t +12 -0
- data/vendor/git-subrepo/ext/bashplus/test/fcopy.t +22 -0
- data/vendor/git-subrepo/ext/bashplus/test/lib/foo/bar.bash +3 -0
- data/vendor/git-subrepo/ext/bashplus/test/lib/foo/foo.bash +3 -0
- data/vendor/git-subrepo/ext/bashplus/test/source-bash+-std.t +18 -0
- data/vendor/git-subrepo/ext/bashplus/test/source-bash+.t +23 -0
- data/vendor/git-subrepo/ext/bashplus/test/test.bash +70 -0
- data/vendor/git-subrepo/ext/bashplus/test/use.t +19 -0
- data/vendor/git-subrepo/ext/test-more-bash/Changes +15 -0
- data/vendor/git-subrepo/ext/test-more-bash/License +21 -0
- data/vendor/git-subrepo/ext/test-more-bash/Makefile +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/Meta +30 -0
- data/vendor/git-subrepo/ext/test-more-bash/ReadMe.pod +115 -0
- data/vendor/git-subrepo/ext/test-more-bash/doc/test-more.swim +89 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Changes +15 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/License +21 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Makefile +45 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Meta +28 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/ReadMe.pod +77 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/bin/bash+ +43 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/doc/bash+.swim +61 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/lib/bash+.bash +92 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man1/bash+.1 +134 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man3/bash+.3 +134 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/base.t +12 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/fcopy.t +22 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/bar.bash +3 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/foo.bash +3 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+-std.t +18 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+.t +23 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/test.bash +70 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/use.t +19 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Changes +15 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/License +21 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Makefile +37 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Meta +28 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/ReadMe.pod +66 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/doc/test-tap.swim +48 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/lib/test/tap.bash +153 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/man/man3/test-tap.3 +119 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/bail_out.t +13 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/done.t +10 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail.t +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail_fast.t +15 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/helper.bash +9 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/pass.t +9 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/plan.t +10 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/skip_all.t +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/tap.t +13 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/bail.t +14 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail.t +7 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail_fast.t +12 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-init.t +8 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-plan.t +9 -0
- data/vendor/git-subrepo/ext/test-more-bash/lib/test/more.bash +95 -0
- data/vendor/git-subrepo/ext/test-more-bash/man/man3/test-more.3 +173 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/fail.t +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/more.t +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/pass.t +9 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/setup +8 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/skip_all.t +11 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/test/fail1.t +12 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/test/skip_all.t +10 -0
- data/vendor/git-subrepo/lib/git-subrepo +1903 -0
- data/vendor/git-subrepo/lib/git-subrepo.d/bash+.bash +1 -0
- data/vendor/git-subrepo/lib/git-subrepo.d/help-functions.bash +339 -0
- data/vendor/git-subrepo/man/man1/git-subrepo.1 +743 -0
- data/vendor/git-subrepo/note/0.4.0 +12 -0
- data/vendor/git-subrepo/note/AllGitCmds +148 -0
- data/vendor/git-subrepo/note/Cases +32 -0
- data/vendor/git-subrepo/note/Commands +33 -0
- data/vendor/git-subrepo/note/Dags +199 -0
- data/vendor/git-subrepo/note/Gists +7 -0
- data/vendor/git-subrepo/note/Links +25 -0
- data/vendor/git-subrepo/note/Plugins +10 -0
- data/vendor/git-subrepo/note/Spec +39 -0
- data/vendor/git-subrepo/note/Story1 +57 -0
- data/vendor/git-subrepo/note/ToDo +55 -0
- data/vendor/git-subrepo/note/design.swim +137 -0
- data/vendor/git-subrepo/note/design2.swim +85 -0
- data/vendor/git-subrepo/note/init-test +38 -0
- data/vendor/git-subrepo/note/pull-dance.txt +18 -0
- data/vendor/git-subrepo/note/recreate-rebase-conflict.sh +56 -0
- data/vendor/git-subrepo/note/subtree-rebase-fail-example/test.bash +29 -0
- data/vendor/git-subrepo/note/test-subrepo-push.sh +69 -0
- data/vendor/git-subrepo/note/test.sh +58 -0
- data/vendor/git-subrepo/pkg/bin/generate-completion.pl +210 -0
- data/vendor/git-subrepo/pkg/bin/generate-help-functions.pl +89 -0
- data/vendor/git-subrepo/share/completion.bash +42 -0
- data/vendor/git-subrepo/share/enable-completion.sh +50 -0
- data/vendor/git-subrepo/share/git-completion.bash +2738 -0
- data/vendor/git-subrepo/share/zsh-completion/_git-subrepo +81 -0
- data/vendor/git-subrepo/test/branch-all.t +41 -0
- data/vendor/git-subrepo/test/branch-rev-list-one-path.t +43 -0
- data/vendor/git-subrepo/test/branch-rev-list.t +47 -0
- data/vendor/git-subrepo/test/branch.t +52 -0
- data/vendor/git-subrepo/test/clean.t +43 -0
- data/vendor/git-subrepo/test/clone-annotated-tag.t +45 -0
- data/vendor/git-subrepo/test/clone.t +107 -0
- data/vendor/git-subrepo/test/compile.t +19 -0
- data/vendor/git-subrepo/test/config.t +58 -0
- data/vendor/git-subrepo/test/encode.t +91 -0
- data/vendor/git-subrepo/test/error.t +171 -0
- data/vendor/git-subrepo/test/fetch.t +43 -0
- data/vendor/git-subrepo/test/gitignore.t +61 -0
- data/vendor/git-subrepo/test/init.t +64 -0
- data/vendor/git-subrepo/test/issue29.t +98 -0
- data/vendor/git-subrepo/test/issue95.t +98 -0
- data/vendor/git-subrepo/test/issue96.t +96 -0
- data/vendor/git-subrepo/test/pull-all.t +38 -0
- data/vendor/git-subrepo/test/pull-merge.t +113 -0
- data/vendor/git-subrepo/test/pull-message.t +88 -0
- data/vendor/git-subrepo/test/pull-new-branch.t +58 -0
- data/vendor/git-subrepo/test/pull-ours.t +90 -0
- data/vendor/git-subrepo/test/pull-theirs.t +82 -0
- data/vendor/git-subrepo/test/pull-twice.t +44 -0
- data/vendor/git-subrepo/test/pull-worktree.t +40 -0
- data/vendor/git-subrepo/test/pull.t +99 -0
- data/vendor/git-subrepo/test/push-after-init.t +51 -0
- data/vendor/git-subrepo/test/push-force.t +56 -0
- data/vendor/git-subrepo/test/push-new-branch.t +61 -0
- data/vendor/git-subrepo/test/push-no-changes.t +29 -0
- data/vendor/git-subrepo/test/push-squash.t +56 -0
- data/vendor/git-subrepo/test/push.t +176 -0
- data/vendor/git-subrepo/test/reclone.t +45 -0
- data/vendor/git-subrepo/test/repo/bar/HEAD +1 -0
- data/vendor/git-subrepo/test/repo/bar/config +4 -0
- data/vendor/git-subrepo/test/repo/bar/objects/1f/0c4b264caed0126814a0ede851a1e0b4e16ae6 +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/87/46903fdb1b9c2101377880125917c2e05b4d69 +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/94/c86ffc745232d89f78c6f895e11e71272518db +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/c6/76c57b6576743fa56278527aa60ebd2e202a7c +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/f6/2a8ff3feadf39b0a98f1a86ec6d1eb33858ee9 +0 -0
- data/vendor/git-subrepo/test/repo/bar/refs/heads/master +1 -0
- data/vendor/git-subrepo/test/repo/bar/refs/tags/A +1 -0
- data/vendor/git-subrepo/test/repo/foo/HEAD +1 -0
- data/vendor/git-subrepo/test/repo/foo/config +4 -0
- data/vendor/git-subrepo/test/repo/foo/objects/a0/f4cdaaf533a936296cdebbed8206c3b9ededa8 +0 -0
- data/vendor/git-subrepo/test/repo/foo/objects/e2/1291a1ad392a9d4c51dd9586804f1467b28afd +0 -0
- data/vendor/git-subrepo/test/repo/foo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/vendor/git-subrepo/test/repo/foo/refs/heads/master +1 -0
- data/vendor/git-subrepo/test/repo/init/HEAD +1 -0
- data/vendor/git-subrepo/test/repo/init/config +5 -0
- data/vendor/git-subrepo/test/repo/init/objects/11/523f5dcf03b4c89b592dc8a3d0308f68da2386 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/14/2addf8ec5f37334e837440122c62f2c68a29ad +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/32/5180321750a21cd7a4e7ecda319e557a4f6a09 +2 -0
- data/vendor/git-subrepo/test/repo/init/objects/3d/918c6901c02f43af5d31779dd5e1f9166aeb36 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/3e/4cb596066dce63ba4d047abddb677389b65e19 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/4b/6e53022e7a04f07887697e4f3d7c377fd9822b +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/58/931fc1bd559b59c41ea738fc7ad04f9ad01bd3 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/5e/c0c28e1b806f25efdca18fcf7a74b49c3755bd +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/75/fa6584e748f57eff06eebdc55e9ac21d4fcbf2 +1 -0
- data/vendor/git-subrepo/test/repo/init/objects/80/2d5edbd5e1cb7fca82b5bd38e7c8a0a496fb20 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/94/7b3d714c38791e95ad6f928b48c98bb8708acd +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/95/e1f2df3f4d5f3d7a60588c25a7ca8a913d3c2a +1 -0
- data/vendor/git-subrepo/test/repo/init/objects/b1/5f4a7666baf40d949548ead946a3370e273479 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/c3/ee8978c4c5d84c3b7d00ba8e5906933d027882 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/c8/b0bffbc405ef3fad7354ff833fbec36d67ddfa +3 -0
- data/vendor/git-subrepo/test/repo/init/objects/dd/8bdb934ec848137f011fe423b185505c343626 +2 -0
- data/vendor/git-subrepo/test/repo/init/objects/e2/9be58c767cfeb27235c995d293a7d71aac0135 +2 -0
- data/vendor/git-subrepo/test/repo/init/objects/ee/1224401fc6aac595145fa727dcf6706ac8aec1 +1 -0
- data/vendor/git-subrepo/test/repo/init/objects/f1/cc1a657b2e805c400f5dcaaa76bd29c6178b1b +0 -0
- data/vendor/git-subrepo/test/repo/init/refs/heads/master +1 -0
- data/vendor/git-subrepo/test/setup +205 -0
- data/vendor/git-subrepo/test/status.t +68 -0
- data/vendor/git-subrepo/test/submodule.t +45 -0
- 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
|
+
)
|