Reading about Git submodules and Heroku, I figured I'd share my
experience...  Some of you know that I've been playing with
hobostarter, http://github.com/bronson/hobostarter/tree/master  I
intended to use Git submodules to produce a ready-to-run Hobo
environment, just clone start writing your app.  No need to worry
about gem dependencies, installing Rails, matching Hobo and Rails
versions, etc.  Nirvana!

Well, after using hobostarter with multiple Hobo projects for a few
months I've decided that, while Hobostarter would be very useful, Git
submodules are an abject failure.  They seem great when you first set
up the project but they quickly become horrible when trying to do
day-to-day things...

- Submodules prevent bisecting (you can work around this but it's laborious)
- They are painful when merging, or rolling forward or back in time.
- They can't accept local changes or share objects with the
superproject.  To commit to a submodule, you must host the entire
subproject yourself.
- Git doesn't display changes to submodules so they're always getting lost...
- ...and you're always forgetting to push.  And when you push your
project but forget the submodule, the error message is awful...
- ...and your coworker is hosed until you finish your checkin.  It's
like locking a needed file in Visual Source Safe and then going home
(without the helpful error message).
- It's fairly involved to switch to a different repo, which you have
to do when committing local changes.
- the three-step clone (clone / init / update) is odd and a fairly
clear sign submodules aren't intended for this use case.
- the error messages are utterly uninformative to anyone without deep
Git knowledge.  Error messages tend to crop up a lot.

I've pretty much decided not to use Git submodules on anything other
than my own pet projects.  In particular, if anyone else is going to
be contributing, even if they're a full-on Junioesque Git expert, I
will not use submodules.

For little one-offs or experiments, they're fine.  When you start to
run into merge/bisect issues, you can just replace the submodule with
a code snapshot and continue.  But for any sort of team environment,
where it's frowned upon to make huge changes like that at a whim, I
can pretty much guarantee that submodules will eventuallyl cost you
far more time than they'll save.

Sorry if this reads like a rant, I just intended to share my
experience and maybe got carried away a little.  :)

    - Scott

P.S. Interestingly, the original problem that Git submodules were
intended to solve (creating a distribution repository) is actually
solved better by Repo, http://source.android.com/download/using-repo .

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Hobo 
Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/hobousers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to