6 ms·
> Git submodule is a mess and now a legacy of git. I hear this kind of thing all the time, but I don't understand why. I've never had any problem whatsoever wi
by jpeterson 14y ago
> Git submodule is a mess and now a legacy of git.
I hear this kind of thing all the time, but I don't understand why. I've never had any problem whatsoever with git submodule. Can you elaborate a bit on what you mean by this?
- primatology 14y agoOff the top of my head: Ever tried removing a submodule? Why is there no git submodule rm? (No, "it's confusing" is not a valid argument.) If the pull fails (say, from the wrong protocol), you end up with a half-baked submodule. Impossible to move, impossible to remove, impossible to update unless you dive into the config. Misspell the folder you wanted the submodule in? That sucks. Go delete it from two separate locations, and try again!
- nodemaker 14y agoYes these problems suck. Sometimes I have deleted my entire repository and cloned it again to update the submodules just because I changed the .gitmodules file. Note: This actually takes less commands than messing around with .git/config.
- Confusion 14y agoIf that is the worst problem -- one that is easy to solve and easy to repeat the few times you need it -- then the more love for submodules. I'll take that over any other available solution any day (I don't count subtrees as 'available' yet).
- SkyMarshal 14y agoSpeaking of git submodule rm, here's a basic script I use for that [1], based on Stackoverflow's answer [2]. 1. https://github.com/byrongibson/scripts/blob/master/git-rm-submodule.sh https://github.com/byrongibson/scripts/blob/master/git-rm-su... 2. http://stackoverflow.com/questions/1260748/how-do-i-remove-a-git-submodule http://stackoverflow.com/questions/1260748/how-do-i-remove-a...
- zbowling 14y agoEver had an upstream gitsubmodule move or shut down? I can't go back 6 months in my SCM and rebuild exactly what I had because the repo is gone now. This is bad and against the concept of having an SCM in the first place. There is a horrible habit of people forking projects on github just so their submodule stay stable. It's broken.
- nodemaker 14y ago>There is a horrible habit of people forking projects on github just so their submodule stay stable. It's broken. Yes I do this and I hate doing it!
- pyre 14y ago> There is a horrible habit of people forking > projects on github just so their submodule > stay stable. It's broken. People are forking projects on github in that way because it's a quick, easy, cheap way to create a mirror/hosted copy of the repository they want to use. I don't see how this is an example of how git-submodule is broken. If you want to use someone else's code, that is under someone else's control in your repository without creating your own backup of said code, then you're the one taking the risk by not creating said backup. If the git-submodule is mission-critical to you then you should either: 1. Always keep a separate mirror of the 3rd party repo. or 2. Mirror the 3rd party repo to a hosted location, so that your submodule can point to the mirror instead of the source (basically creating a caching layer under your control). This is no different than the guy that keeps all of his email in Gmail, then complains because Google shut down his account that 'email is broken' because it's possible for this to happen.
- zbowling 14y agoSure. Why I explained the work around. Subtree includes the full history of the other project without work-arounds
- pyre 14y agosubtree also includes the full history of the other project in your project's history unless you squash all of the commits (and if you squash them, then you haven't stored the full history). There might also be licensing reasons for wanting to keep the repositories separate, but not.