[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#911397: RFP: git-subrepo -- Git Submodule Alternative



Package: wnpp
Severity: wishlist

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

* Package name    : git-subrepo
  Version         : 0.3.1
  Upstream Author : Ingy dot Net <ingy@ingy.net>
* URL             : https://github.com/ingydotnet/git-subrepo
* License         : MIT
  Programming Lang: shell
  Description     : Git Submodule Alternative

This git command "clones" an external git repo into a subdirectory of your
repo. Later on, upstream changes can be pulled in, and local changes can be
pushed back.

This command is an improvement from git-submodule and git-subtree; two
other git commands with similar goals, but various problems.

It assumes there are 3 main roles of people interacting with a repo, and
attempts to serve them all well:

- - owner - The person who authors/owns/maintains a repo.
- - users - People who are just using/installing the repo.
- - collaborators - People who commit code to the repo and subrepos.

The git-subrepo command benefits these roles in the following ways:


* Simple and intuitive commandline usage (with tab completion).
* Users get your repo and all your subrepos just by cloning your repo
* Users do not need to install git-subrepo, ever.
* Collaborators do not need to install unless they want to push/pull.
* Collaborators know when a subdir is a subrepo (it has a .gitrepo file)
* The .gitrepo file never gets pushed back to the subrepo upstream
* Well named branches and remotes are generated for manual operations
* Owners do not deal with the complications of keeping submodules in
  sync.
* Subrepo repositories can contain subrepos themselves.
* Branching with subrepos JustWorks.
* Different branches can have different subrepos in different states,
  etc.
* Moving/renaming/deleting a subrepo subdir JustWorks.
* You can init an existing subdirectory into a subrepo.
* Your git history is kept squeaky clean.
* Upstream history (clone/pull) is condensed into a single commit.
* Pulls can use a merge, rebase or force strategies.
* You can see the subrepo history with git log subrepo/<subdir>/fetch.
* Commits pushed back upstream are not condensed (by default).
* Trivial to try any subrepo operations and then reset back.
* No configuration required.
* Does not introduce history that messes up other git commands.
* Fixes known rebase failures with git-subtree.

-----BEGIN PGP SIGNATURE-----

iQJEBAEBCgAuFiEESvqqiCmYrIkee91NVGXnfnh27QQFAlvKChgQHHZhcmFjQHZh
cmFjLm5ldAAKCRBUZed+eHbtBNijD/9MSuRwEL5S3H5ILr6AN0sCxP9H7ubXvWo1
/1lEWQ4ILqHskUdbSkWeB8i5nXCOcISl0OWp1/AZ3GONhxEoaMV8zI2SD+RDc/bz
JgFNcXCV0q822ufR6o+cFYs0CwinEnIYqeIMye6CACmmhKGb5nREpijpB4E8q2li
TPHFEb33113weQ+KPPtbJcBY/IUlg30CwZuSsSiALCObRtcf+aXtyp2+1sDblI8w
4QAgj9NV6QGBX/KgLpeph5HWfacDkYPyw0vKTS4ZusvedEZw6ygZegFbthCZz9Q5
I5wkUubVKAGeflEhIOrq8EL9C6HeGpaTBmRHwIJpasZ9gM1xsBrljZ65IE1XlC+q
VVTSU1u2jJT6mo+PR12xMeHqTSdlmW65w+yEQJ8g5jYHKoM2j4Y63XJKmimlWa/9
C37jpGyRv+UXaIopZMMo4TGDkE+vTo5TiqxGOLenNImj0wa3R8plDa0Sv1jfnvd4
9d/p0Wcc01STCLOt3d3RPKy0K65QB80CIFcghgY0cjbWPR6hmxQ4/5eSYBcBwCFw
YMzpvk8hNeazdPRbtvKCOHw7lytyq7XuyBQ049IP2ve9ajzbDZmwXN19Edorx5K1
WqlZaxRpjevCAQ9F3fGYI06y5e5v8FwYZqG78Yky/D0ux4Cd8ODo3nboQ61B6fn/
CNIF59VpCQ==
=fgWu
-----END PGP SIGNATURE-----


Reply to: