incubator-ooo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Stahl <>
Subject Re: single repository status
Date Thu, 14 Jul 2011 16:03:39 GMT
On 09.07.2011 07:57, Greg Stein wrote:
> Hi all,
> I borrowed some space on some ASF equipment and used the
> '' script to pull down all of the CWS repositories (in
> addition to the OOO340 and master_l10n/OOO340 repositories). This
> consumed 77 Gb of disk space.
> The script has been updated with all my fixes to make
> this happen, and the cws-list.txt file has been updated to reflect all
> CWSs that have actual content beyond OOO340.
> I have updated to do a basic combination of the
> repositories. This produces a 2.7 Gb repository.
> However! The single-hg script does not apply any tags/bookmarks for
> the heads introduced by the pulls from the CWS repositories.
> Originally, I thought to apply bookmarks, but ... meh. We can just
> apply tags. It isn't like we are going to push to the repository and
> need the bookmark to float with the changes. So the next step is to
> update single-hg to apply the appropriate tags. At that point, I will
> publish a bundle so that most people can skip all the above steps and
> start playing with the repository that will feed into the next step
> (convert to svn).
> Once the tags are properly marked, then we can start testing the
> conversion to Subversion. Please note, however: the hg conversion
> script does *not* process tags. We will have to write that. We will
> also have to somehow manage construction of branches. We may also have
> to update the conversion tool to properly handle the "merge"
> changesets that Hg records.

after looking at the HG convert svn_sink a little, this looks rather 
difficult to me.

well, tags should be easy.

but how to reconstruct the branching is kind of unclear to me.
the first ~260k changesets are linear and were initially taken from SVN, 
so that shouldn't be a problem.
but then there are lots of HG merge changesets.

in the HG repo there is sort of a "master" history that is basically a 
sequence of CWS integration merge changesets, with the occasional 
masterfix thrown in.
but this is not explicit: these are all just merges with 2 parents, and 
it's not guaranteed which of these 2 is the CWS and which the master.
basically the requirement is to convert one of the thousands of paths 
through this DAG from the common ancestor revision ~260k to revision 
c904c1944462 (OOO340 head) into a SVN trunk.

> In the single repository that I constructed, there are 102 heads. I
> believe these will become branches.

well, they should...
these don't have a common ancestor from the "trunk" history; generally 
they contain several merges from the master into the CWS as well.
it was also quite common practice to merge one CWS into another.

i don't know SVN implementation of branching/merging that well, and i 
have no idea how this history should look like in SVN, or whether it's 
even expressible.

one thing we could do in any case is just not convert the CWSes; put up 
a read-only HG or git repo with all CWSes somewhere, then use that to 
rebase the CWS onto OOO340, then apply a patch to a SVN branch based on 
OOO340, then merge with SVN trunk.

> We will need a script to take the single repository as input, and run
> the conversion process. I think there will multiple inputs to that
> process, so there will be additional input files to coordinate and
> drive the conversion. All of this should be placed into the tools/dev/
> directory. Help is wanted!
> Cheers,
> -g

'I have had at least two students tell me (in the words of one) that
  "you seduced me, you made me think computing and programming was
  sooo elegant and sooo beautiful, and now I am stuck with C++."'
  -- Matthias Felleisen

View raw message