On 06/11/12 02:56, Manuel M T Chakravarty wrote:
I wonder about the loss of changes that both you and Ian mentioned.
We are using git submodules for Accelerate, and yes, you need to use
them in the right way (as you do with the nested repos), but I don't
think we ever lost anything due to submodules. How does that happen?
Submodules are normally in a detached-HEAD state, and when you do 'git
submodule update' it does a checkout to the new revision, so any commits
you previously made are lost (well, they're still in the repo, but you
have to dig into the reflog to get them back, and a future git gc will
kill them):
I discovered this when I investigated submodules a while ago:
http://hackage.haskell.org/trac/ghc/wiki/DarcsConversion#Theperspectiveonsubmodules
and this blog post is a good summary of the problems that can trip
people up (see in particular the section "Oh were you using that?"):
http://codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/
The upshot is that there are new gotchas that people will run into with
submodules, so we'll need some clear instructions on what to do, and
perhaps some tooling (in sync-all) to catch the common mistakes.
I also imagine that we might still like to keep the ./sync-all script to
automate the use of submodules for the common use cases. (That should minimise
the risk of mistakes.)
Right, the plan Ian had in mind was for sync-all pull to do an automatic
submodule update too.
Cheers,
Simon
Manuel
Simon Marlow <marlo...@gmail.com>:
On 05/11/2012 10:52, Manuel M T Chakravarty wrote:
I agree with Geoff, submodules bring a certain complexity, but also
advantages. We already pay for most complexities if we use submodules
at all (such as having to use "git submodule" and remember to keep
them in sync). If we pay already, why not reap the advantages for the
rest of the repositories as well.
For example, I often make changes in the main repo and the dph repo
at the same time. It would be much more convenient if a branch would
reflect the shared state of both (i.e., if dph would be a submodule
of the main repo).
In other words, if we use submodules at all (which is an idea I
like), why add additional complexity by using different mechanisms
for different subrepos? And why not reap the benefits of submodules
across the board?
I wouldn't object to trying that, if that's what people want. I buy the
advantages of submodules, and I buy the argument that since we have some
submodules, it's probably easier to make them all submodules.
I've been deliberately conservative in our adoption of submodules, because my
own experience wasn't good when I tried them - it's easy to get very confused,
and to lose changes. The setup with separate repos has its disadvantages, but
at least we fully understand it, and it's under our control.
We're forced to use submodules for upstream packages, because we will sometimes
need to move from tracking one branch to another branch. This doesn't work
well with separate repos, because GHC devs would need a git reset when we
switch to tracking a different branch. Hence the move to submodules.
Cheers,
Simon
Manuel
Geoffrey Mainland <mainl...@apeiron.net>:
On 11/02/2012 08:10 PM, Ian Lynagh wrote:
Hi all,
We have been working on a new way in which we handle the repositories
that make up a GHC tree, in order to makes the process smoother for all
parties.
Our proposal is here:
http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions/Repositories
Please have a look and let us know what you think, and especially
whether you think there is anything that we've failed to take into
account.
Thanks
Ian
Hi Ian,
Thanks for putting together the proposal.
If we will now be using git submodules for external libraries, can we
not just use submodules for all libraries? That way the GHC repo hash
will uniquely specify everything needed to reproduce a build. Right now
it is painful to do any sort of bisect operation---doing so requires
digging through build logs to find fingerprint files for past builds.
It looks like the proposal will leave us with the pain of fingerprints
and add the additional pain of git submodules. I am very much in favor
of just using submodules for everything.
Geoff
_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc
_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc
_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc
_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc
_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc