[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: