3

約 1 年前に Mercurial を使い始めたとき、すべてのプロジェクトを入れるために SandBox という 1 つのリポジトリを作成しましたが、1 年ほど経った今、それはあまり賢明な選択ではないことに気付きました。各プロジェクトに独自のリポジトリを提供し、履歴も保持したいと思います。これを達成する簡単な方法はありますか?

4

2 に答える 2

3

さて、次の構造を持つプロジェクトを考えてみましょう ( bitbucket 内):

$ find hgmultiproject
hgmultiproject
hgmultiproject/proj2
hgmultiproject/proj2/mysndfile
hgmultiproject/proj1
hgmultiproject/proj1/myfirstfile
hgmultiproject/proj3
hgmultiproject/proj3/mythirdfile

このプロジェクトには次のログがあります。

revision:    7:6bbc26c1a34d
tag:         tip
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:49:22 2012 -0300
summary:     correcting

revision:    6:32c312e7072e
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:48:55 2012 -0300
summary:     Adding period

revision:    5:f332e0ecee4d
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:48:39 2012 -0300
summary:     Moving to correct name

revision:    4:5850a93d80dd
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:48:05 2012 -0300
summary:     More content on second file

revision:    3:0098ebd2cea5
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:47:41 2012 -0300
summary:     A third file

revision:    2:096c984a8f2a
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:47:09 2012 -0300
summary:     More content on 1st file

revision:    1:b9491918efcc
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:46:52 2012 -0300
summary:     My second file

revision:    0:4e429ac2fee9
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:46:23 2012 -0300
summary:     My first file

--filemapオプションを指定したConvert 拡張機能を使用して、プロジェクトを抽出できます。

どうやってするの?まず、ファイルマップ ファイルを作成する必要があります。この場合、コンテンツは次のようになります。

rename proj1 .
exclude proj2
exclude proj3

最初の行は、ディレクトリ内のすべてをproj1新しいリポジトリのルートに移動します。2 行目proj2は新しいリポジトリから dir を削除し、3 行目はproj3.

それを使用するには、次のように呼び出します。

$ hg convert --filemap proj1filemap hgmultiproject/ extracted-proj1

次に、新しいレポを入力します。

$ cd extracted-proj1/

作業コピーがありません...

extracted-proj1 $ ls

y しかし、更新する必要があるだけです:

extracted-proj1 $ hg update
1 updated files, 0 merged files, 0 deleted files, 0 nonresolved files
extracted-proj1 $ ls
myfirstfile

そして新しいログは...

extracted-proj1 $ hg log
revision:    2:eb31727c0df8
tag:         tip
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:48:55 2012 -0300
summary:     Adding period

revision:    1:e701f0ad5335
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:47:09 2012 -0300
summary:     More content on 1st file

revision:    0:c0b6ad18ff22
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:46:23 2012 -0300
summary:     My first file

リポジトリの各プロジェクトについて、次の手順に従う必要があります。

于 2012-08-08T15:06:16.703 に答える
1

Convert 拡張機能を見てみましょう: https://www.mercurial-scm.org/wiki/ConvertExtension

実際に必要なのは--filemap: https://www.mercurial-scm.org/wiki/ConvertExtension#A--filemap

于 2012-08-08T14:53:22.577 に答える