How to combine several small repositories into separate subdirectories of a single repository?
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Tue Apr 28 22:22:45 UTC 2020
On 4/28/20 9:25 PM, Chris Green wrote:
> On Tue, Apr 28, 2020 at 06:46:17PM +0200, Manuel Jacob wrote:
>> On 2020-04-28 17:38, Chris Green wrote:
>>> I have a number of separate small projects maintained using mercurial,
>>> since they all relate to Dokuwiki and could probably, in the long
>>> term, share some code it would see sensible to combine them into a
>>> single repository.
>>>
>>> So, given a set of separate projects each with its own .hg as follows:-
>>>
>>> ./dokuwiki/plugins/servlog/.hg
>>> ./dokuwiki/plugins/tagentry/.hg
>>> ./dokuwiki/plugins/trip/.hg
>>> ./dokuwiki/plugins/showmail/.hg
>>> ./dokuwiki/tpl/roundbox/.hg
>>> ./dokuwiki/tpl/dokucms/.hg
>>>
>>> How do I combine them into a single mercurial repository with its data
>>> stored in ./dokuwiki/.hg ?
>>
>> One possibility would be:
>>
>> * Create a new repository.
>
> OK
>
>
>> * Pull from each small repository. After having done this for all small
>> repositories, all branches from all repositories will coexist in the new
>> repository.
>
> But there are lots of files with the same name in the separate
> projects, for example nearly all of them will have one or both of
> action.php and/or syntax.php.
>
>
>> * Rename the files in each of the branches such that they will be at the
>> right place in the end. E.g. for each file in ./dokuwiki/plugins/servlog/,
>> run "hg mv <filename> ./dokuwiki/plugins/servlog/<filename>".
>
> I guess I need to automate this with bash and wildcards as otherwise
> it will take a *long* time. There's around 1000 files involved.
You can rename full directory, so just move the top level file and
directory into a sub-directory. It should not be long.
>> * Merge the branches that you want to develop together in the future.
>>
> No branches at the moment.
Each repository you pull will have its own anonymous branch were files
need to be renamed, then merged.
>> If you want all the history to be interleaved instead of just merged
>> together at one place, a more sophisticated solution is needed.
>
> I'm not sure I'm clever enough to even understand what this means! :-)
>
> Thanks everone anyway.
>
--
Pierre-Yves David
More information about the Mercurial
mailing list