A git repository for OCaml packaging...
Hello,
I delved into OCaml packaging svn history and decided it was too complex
for a fully automated conversion keeping all the DAG-ish history.
Therefore, I modified my svn2git script so that it generates shell
scripts from "svn log" (XML) output. I then tuned the shell scripts for
this specific packaging.
The script generator itself is not yet fully general so that it could be
used for any package.
Nonetheless, I have now a quite satisfactory repository with this
semi-automatic conversion process:
http://git.debian.org/?p=users/glondu-guest/test/ocaml.git
I believe this repository is ready for use.
If you want to have a look at what the shell scripts might look like,
they are all in my home on alioth, in directory ocaml-svn2git-migration.
Of course, they won't work as is, as manual intervention is needed in
the process.
Some remarks:
* Many commit messages have been dropped because of "semantic"
differences between svn and git. For examples, branch creation/deletion
are not commits in git, branches do not have formal names, etc.
* Commits removing tarballs have been dropped (all pristine-tar data is
in pristine-tar branch).
* There were many fast-forward changes, i.e. branches which were merged
with a trunk where no changes occurred since the branching point. As a
consequence, these branches will not occur at all in the git history.
* There has been in the past an "ocaml-nums" package, packaged in the
same directory as ocaml. AFAIU, it is completely independant
(history-wise) of ocaml itself, so I ignored it. If we want to keep its
history, I think we should make a separate repository.
* The policy was taken from elsewhere in the svn tree at r2831 (a
subdirectory of dh-make-ocaml). Only the history of the policy itself
has been keeped, the remaining of dh-make-ocaml was ignored.
* I think the full history of cdbs and dh_ocaml has been imported
faithfully.
* I don't understand svn commits r1211 and r1441, so I ignored them.
* Concerning disk space: zack's repos is 2.7M, mine is 9.0M, but mine
has upstream sources and pristine-tar data. FTR, a tarball of 3.10.2 is
2.7M compressed and 18M uncompressed. Our svn repos (with all packages)
is 555M.
The git repos have the following branches:
* master/upstream/pristine-tar: as usual with git-buildpackage
* cross/upstream-cross: a cross-compiler branch created by Eric Cooper.
It is currently stuck at OCaml version 3.08.2, but it might be
interesting in the future if someone wants to port it for a recent
version of OCaml, so I kept them.
* new-ocaml-md5sum: branch created by zack. I don't know exactly what
it is, but I kept it since it seemed quite recent.
Next steps:
* I intend to cleanup my svn2git script so that it generates a shell
script for any package repos. The generated-shell-script method proved
to be very flexible and useful for repos with complex branching/merging
history. Moreover, one can more easily put breakpoints and make checks
during the conversion process.
* What do we do with tools/projects?
Any comments on {the new repos,the process,whatever else}?
--
Stéphane
Reply to: