Git repository backwards compatibility

I just had a quick question about git – how backwards compatible are git repositories? Eg., I’ve created a repository using git 1.6.4 and the svn2git ruby script, but I want to put it on a machine that’s running Debian Lenny, which has git 1.5.6.5. Would I still be able to interact with the repository properly?

  • Will TortoiseSVN 1.7 work properly against a SVN 1.6 repository?
  • Is Xcode backwards compatible and does Git works with different Mac OS?
  • How to announce backward incompatible changes in OSS project?
  • Git v1.8 backwards compatibility with Git v1.7
  • Compatibility issues between git 1.8 client and older git server
  • Getting merged code “right” with Git
  • Git diff after back and forth merging?
  • Can I push to git and force a maximum pack size?
  • What does “changeset stripped” mean?
  • Pulling changes of another branch and replay my local changes over them
  • Git pushing into master failed…
  • 2 Solutions collect form web for “Git repository backwards compatibility”

    It’s extremely backward compatible in terms of the actual storage of information, which is all you’re worried about in this case. I’m not a total expert, but I doubt that’s changed since the first stable release.

    The only compatibility problem I can think come up with is if the two versions of git are working on the exact same repo (not clones) and there are options/aliases set in the .git/config that work in the newer version but were not [fully] implemented in the older version… but even then you’d have to try pretty hard with versions this close. And again, this isn’t anything to do with the actual information in the repo, just the commands you use to manage it. That’s where the development of git is taking place.

    There were very few incompatibile changes in layout of git repository; incompatibile in the sense that older version could be not able to deal with repository created with newer version, or do an exchange (fetch or push) with newer server.

    You should check RelNotes (e.g. from here) to find if there was some incompatibile change between versions you use.

    Some (probably all) of those incompatibile changes are:

    • submodules support: git version before submodule support was introduced in git core will not be able to handle repository which uses submodules (it does not understand subtree/gitlink entries)
    • packed refs: old git version would not be able to fetch via HTTP from newer repository that uses packed refs (.git/packed-refs). Same with old git using the same repository as new git which has packed refs
    • offset delta packfiles: old git doesn’t understand newer (more compact) version of git packfile (ofs-delta). This is not a problem for fetching and pushing, as there is discovery of features client supports by server.

    None of those were between 1.6.4 and 1.5.6, I think.

    Git Baby is a git and github fan, let's start git clone.