Junio just pointed out that "convert-cache" didn't actually handle some of the old-style commits that git itself has (notably, the date changes).
I fixed that, and converted git, so that the dates are now correct in "git log" for the early commit entries too.
This means that all the commit objects in my git tree ended up being re-generated: the data itself doesn't change, and none of the tree or blob objects are any different, but since the first "commit" changed (the first several ones, in fact - it was about a week until the date format got fixed), the whole chain of commits ends up being different.
That has almost zero impact _except_ for anybody who merges directly with my tree using git itself. You now have two choices:
- convert your own git tree (probably a good thing, otherwise your old commit entries will always be bogus), at which point it should just merge fine with mine automatically.
NOTE! The fact that "mktime()" seems to depend on the timezone in which it is made seems to make this questionable. I had always assumed that mktime would take the timezone from the "struct tm", and thus be reliable, but somebody seems to have shown that that is not the case at all!
It's entirely possible that you need to do something stupid like
TZ=US/Pacific
before you convert your tree. I wonder if this might also explain the problems some people (notably Russell) had at around the conversion..
Anyway, _if_ your conversion was successful and matches mine, you should now have a root "e83c5163316f89bfbde7d9ab23ca2e25604af290", that is reachable from the result of the conversion (check with "git log <result>"). You should also have as a top (unless you have made changes of your own):
commit 3f053897b3445988309d0ae7378944783c34d152 tree f5c350ae39f61486622c84597a507611e62fa6af parent c6e007b0942a373bbf87fa3e4e11e2d90907de8c author Linus Torvalds <torvalds@ppc970.osdl.org> Sun Apr 24 22:49:09 2005 committer Linus Torvalds <torvalds@ppc970.osdl.org> Sun Apr 24 22:49:09 2005 Update "convert-cache" to handle git itself. The git archives have some old-date-format commits with timezones that the converter didn't recognize. Also, make it be quiet about already-converted dates.
If it doesn't match that, you can run "convert-cache" (with the _original_ head) several times. When you are happy that it's all ok, you can "commit" the result by writing it to your .git/HEAD file.
- alternatively, if you don't want to convert your thing, you can give a "base commit" by hand when merging, and select one where the "tree" object matches in both mine and yours. This isn't something I would recommend, but it should work and "meld" the two commit chains together even though their root entries differ.
Sorry about all this, I had totally forgotten that we had old-style dates in our git commit history.
Linus