This is intended to work as a starting point for a discussion of what tool we should use to use to track inter-repository dependencies for CB2.0 in the opencrowbar org. I expect the outcome of this discussion to be relevant no matter what we eventually wind up doing, do please leave your opinions about migrating to a different org somewhere else.
First, the ones I have experimented with recently: ./dev tool Pros: * Able to track inter-repository dependencies at a branch, tag, or commit ID level. * Is not tied to a specific set of upstream or remote repositories. * Is able to manange remote tracking branches by introducing and enforcing priorities for remotes. ./dev tool Cons: * Is too aware of exactly how Crowbar repositories should be layed out, enforced by code and not metadata. * Branch tracking is too entangled with the rest of the ./dev tool. The dev tool was initially written to overcome the two main shortcomings of git submodules -- they were pinned to a specific commit, and they were pinned to a specific upstream repository. The first one looks better since git 1.8.2 added support for --branch in git-submodule, but the second one is still an issue. git-subtree Pros: * Only have to worry about one repository. * It is pretty easy to import changes from an external repo into your local repo, and then split them out again to submit to upstream. git-subtree Cons: * The merged repository does not know where its pieces came from, which would require us to do that manually, probably via a metadata-driven script.. * History for the included subtrees is not visible in the subtrees: [victor@m4700 crowbar-subtree]$ pwd /home/victor/src/crowbar-subtree[victor@m4700 crowbar-subtree]$ git subtree pull --prefix barclamps/crowbar https://github.com/crowbar/barclamp-crowbarmaster <output snipped> [victor@m4700 crowbar-subtree]$ git log commit 5d27ba8326e092b132c6cf82365025180b17afb9 Merge: 89fda0a ea2b8e7 Author: Victor Lowther <victor.lowt...@gmail.com> Date: Thu Jan 2 10:17:46 2014 -0600 Add 'barclamps/crowbar/' from commit 'ea2b8e77f4ea7b048bea4932cf0292580c4ed523' git-subtree-dir: barclamps/crowbar git-subtree-mainline: 89fda0a56df6bdd7953f065c1f83eab117493fb4 git-subtree-split: ea2b8e77f4ea7b048bea4932cf0292580c4ed523 commit 89fda0a56df6bdd7953f065c1f83eab117493fb4 Merge: 93b5110 7a9a831 Author: Dirk Mueller <dmuel...@suse.com> Date: Fri Dec 27 02:25:56 2013 -0800 Merge pull request #1973 from vuntz/move-ceph Install ceph barclamp before glance [victor@m4700 crowbar-subtree]$ git log barclamps/crowbar/ commit 5d27ba8326e092b132c6cf82365025180b17afb9 Merge: 89fda0a ea2b8e7 Author: Victor Lowther <victor.lowt...@gmail.com> Date: Thu Jan 2 10:17:46 2014 -0600 Add 'barclamps/crowbar/' from commit 'ea2b8e77f4ea7b048bea4932cf0292580c4ed523' git-subtree-dir: barclamps/crowbar git-subtree-mainline: 89fda0a56df6bdd7953f065c1f83eab117493fb4 git-subtree-split: ea2b8e77f4ea7b048bea4932cf0292580c4ed523 [victor@m4700 crowbar-subtree]$ Yes, that is really all the history visible from barclamps/crowbar. I expected this: [victor@m4700 crowbar-subtree]$ cd ../crowbar/barclamps/crowbar/ [victor@m4700 crowbar]$ git log . commit 5d27ba8326e092b132c6cf82365025180b17afb9 Merge: 89fda0a ea2b8e7 Author: Victor Lowther <victor.lowt...@gmail.com> Date: Thu Jan 2 10:17:46 2014 -0600 Add 'barclamps/crowbar/' from commit 'ea2b8e77f4ea7b048bea4932cf0292580c4ed523' git-subtree-dir: barclamps/crowbar git-subtree-mainline: 89fda0a56df6bdd7953f065c1f83eab117493fb4 git-subtree-split: ea2b8e77f4ea7b048bea4932cf0292580c4ed523 commit b9ca77abb7602cfc77c66382bf9027244b82c978 Author: Judd Maltin <j...@newgoliath.com> Date: Sat Dec 21 01:01:17 2013 -0500 add curl example of creating node. commit 70440d84a96a7eaa24f0c2c2e3d84362f8b0ab65 Author: mmitlin-dell <matthew_mit...@dell.com> Date: Fri Dec 20 22:50:49 2013 -0500 Update documentation of documentation commit a9f797c2af815ff53ee4cd829d878a603c96fcf6 Author: mmitlin-dell <matthew_mit...@dell.com> Date: Fri Dec 20 19:31:38 2013 -0500 docs superimposed hierarchy (squashed) Next, the ones I have read about but not experimented with: git-submodule (pre-1.8.2) HAHAHAHAHA!!! --- forget it. Resolving merge conflicts in the submodule gitlink is too repetitive and annoying. git-submodule (git 1.8.2 and later): Looks more plausible than before, mostly due to --branch, --rebase, --remote, and --no-fetch (http://git-scm.com/docs/git-submodule). Handling multiple remotes might still be an area of concern, and restricting development and build work to platforms that had a handly copy of git 1.8.2 or later could be a problem. gitslave (http://gitslave.sourceforge.net/): Looks like the ./dev tool replicates most of its functionality, except that it has generic metadata intead of being tied to the exact layout of the current Crowbar repositories.
_______________________________________________ Crowbar mailing list Crowbar@dell.com https://lists.us.dell.com/mailman/listinfo/crowbar For more information: http://crowbar.github.com/