On Wed, May 06, 2009 at 12:56:28PM -0700, Christopher Lee wrote: -> On May 5, 2009, at 6:42 AM, C. Titus Brown wrote: -> -> > from what I can tell: -> > -> > github maintains a history of relationships between repositories. -> > -> > If I github-fork your pygr repository into a new 'pygr' repository -> > in my -> > account, github records that fork and stores only the differences -> > between your repo and mine. -> -> Are you sure about this? Can you point me to where you got this -> explanation from github? This sounds very un-git-like to me. After -> all, each git repository is supposed to be a complete, functional -> repository (that's the D in DVCS), and merely refers to other copies -> of the repository by defining "remotes" for push / pull purposes. As -> far as I know, there is no way in git to make a "delta repository" -> that merely stores the diffs vs. a full repository stored somewhere -> else. But of course, my knowledge of git only scratches the surface -> of everything it can do...
These various options are not mutually exclusive ;). My guess is that github is using a copy-on-write approach to store the differences between repos. The fact that forks (me to you, you to me, whatever) have official relationships in the github model indicates that something special is going on. It may be as simple as metadata, as you suggest, or it may be using file links, or ... -> I thought github forks work as follows: -> -> - each repository is a normal git repository, whether it is a fork or -> not. -> -> - a fork differs from a non-fork repository in one minor way: it -> defines a remote called "upstream" that simply points to the parent -> repository. That enables the user to get updates from the parent -> repository by just saying "git pull upstream <branchname>". In all -> other respects, a fork repository is a full, normal git repository -> just like a non-fork repository. If someone were to delete the parent -> repository, I don't believe everyone's fork repositories would turn -> into pumpkins. I think the only effect would be that if a user of a -> fork repository tried to pull from the "upstream" remote, s/he'd get -> an error message saying the URL failed (because the parent repo no -> longer exists). The user would still be able to push to origin (i.e. -> the fork repo stored on github) just fine, I think, and others would -> be able to clone / pull from it just fine too. -> -> - outside the git repositories, github keeps some metadata about "who -> forked from who" to provide nice web features like pull-requests, -> network diagrams, etc. As far as I know, this is just metadata, and -> quite independent of what's actually stored in the actual git -> repositories. I agree that this could be the way github does things -- there's underlying Linux filesystem connections that git also maintains, so it may not just be a matter of metadata -- but I think the pertinent question is, can we manipulate that metadata? The rigamarole that we went through (you creating a new repo NOT forked from mine, then me deleting mine and forking from yours) would have been unnecessary had we had access to manipulate the metadata. In any case, I think we can just stick with whatever you decide. We have the proper relationships between our repositories now, and perhaps no confusion will come of it. cheers, --titus --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "pygr-dev" group. To post to this group, send email to pygr-dev@googlegroups.com To unsubscribe from this group, send email to pygr-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/pygr-dev?hl=en -~----------~----~----~----~------~----~------~--~---