複数のブランチ (つまり、異なるが関連するパッチ セットを含む 2 つ以上の darcs リポジトリ) を持つ darcs プロジェクトを単一の git リポジトリに変換して、各 darcs リポジトリが git リポジトリの個別のブランチに転送されるようにする方法はありますか?
考慮される解決策:
(1) darcs convert コマンドは、darcs を git にエクスポートするための 2 つのレシピを提供します。
を。ワンタイムエクスポート:
$ cd repo
$ git init ../mirror
$ darcs convert export | (cd ../mirror && git fast-import)
これにより、1 つのリポジトリ、1 つのブランチのみが変換されます。
b. マークファイルを使用した増分エクスポート (darcs リポジトリの git ミラーを維持するため):
$ cd repo
$ git init ../mirror
$ touch ../mirror/git.marks
$ darcs convert export --read-marks darcs.marks --write-marks darcs.marks |
(cd ../mirror &&
git fast-import --import-marks=git.marks --export-marks=git.marks)
(b) を使用して、ブランチとして他に darcs リポジトリが 1 つしかない場合は、続行したいと思うかもしれません
$ cd ../mirror
$ git branch branch1
$ git checkout branch1
$ cd ../repo
$ darcs pull ../repo-branch1
手順を繰り返しdarcs convert export
ます。
しかし、他の 2 つのブランチでは、../repo-branch2 をプルすると、branch1 と branch2 のパッチが一緒にマージされるため、これはうまくいかないようです。
(2) Darcs ブリッジ [2]。不完全で、2013 年以降メンテナンスされておらず、「まだ darcs-fast-convert という名前」であり、いずれかの方向 (darcs->git または git->darcs) での 1 回限りの変換にのみ推奨されます。
darcs-bridge ページ自体 [2] では、darcs 2.10 に組み込まれている「darcs convert」コマンドを使用することを推奨しています。
ただし、ブランチを処理できます (多少の作業が必要です)。
[2] のユース ケース 2 を参照してください。
$ git init my_project_git
$ darcs-fastconvert export myproject myproject-branch1 |
(cd my_project_git && git fast-import && git checkout master)
これにより、2 つのブランチ (darcs) myproject -> (git) master (darcs) myproject-branch1 -> (git) myproject-branch1 の 2 つのブランチを持つ git リポジトリが作成されますが、マージは検出されませんでした。
[2] のユースケース 5 は、darcs-bridge が管理しているブランチのリストを変更する方法を説明しています。
「制限は何ですか?」と「何が必要ですか?」[2] では、特別なタグ付けが使用されない限り darcs マージは正しく変換されない (私には理解できない) と言っているようです。タグ付けはマージの前に行う必要があるため、現在は実行できません。
(3) Darcs-fastconvert (darcs-bridge のベース): [2] によると、複数のブランチを管理していませんでした。
(4) darcs-to-git: acc. [2] まで、分岐には対応していません
(5) darcs2git: acc. [2] まで、分岐には対応していません
(6) テーラー: acc. [2] へ、容易にブランチをサポートしない、darcs-fastconvert を支持して廃止された
参考文献:
[1] Darcs-Convert: http://darcs.net/Using/Convert )
[2] Darcs-Bridge: http://darcs.net/DarcsBridgeUsage )