問題タブ [version-control-migration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - hg ブランチを git ブランチに変換しますか?
枝分かれした mercurial リポジトリを git リポジトリに変換し、mercurialから git (一方向のみ) に変更をプルし続ける必要があります。既存の hg-to-git の回答は、ブランチを正しく処理していないようです。たとえば、'default' と 'br1' ブランチを持つ小さな hg リポジトリの結果は次のようになります。
Git は、ブランチ 'master' が 1 つしかないと考えています。 Mercurial ブランチを同じ名前の git ブランチとして表示するにはどうすればよいですか? 「デフォルト」の代わりに「マスター」を使用できますが、他のすべての名前付きブランチを git に含める必要があります。
git - シンボリック リンクをターゲット ファイルの内容に置き換える
複数の独立した git リポジトリに変えたい svn ツリーがあります。この移行の 1 つの側面は、Subversion ツリー内のクロスモジュール シンボリック リンクである inode を、git リポジトリ内の実際のファイル コンテンツに置き換える必要があることです。したがって、ある時点でA/foo
が へのシンボリック リンクB/foo
である場合、対応する git commit にA/foo
は、 の内容を含む通常のファイルが必要ですB/foo
。後で svn commit が のコンテンツを変更した場合B/foo
、 の git モジュールにA
は、この変更を反映する一致する commit が必要です。
これにはどのようなツールを使用できますか?
今のところ、これが私が思いつくことができる最高の計画です:
- svn 全体を git にクローンします
fast-export
それ- シンボリックリンクをコンテンツファイルに変換するために、カスタム作成のスローアウェイコードを使用して出力をマッサージします
fast-import
結果を新しい単一の git リポジトリに- そこからサブモジュールを作成する
しかし、おそらく、既存のコード、既存の機能、既存のツール、または私が考えもしなかったショートカットを使用して、より簡単な解決策を提案できるでしょう。
おそらく、Subversion 側でこれらのステップをさらに処理する方法さえあるでしょう。私はファイルのサブバージョン コピーの作成を多用したため、また、その概念は git の概念ではほとんど表現できないことがわかっているため、上記のアプローチではコピーされたファイルが原因でバージョン履歴が失われるのではないかと心配しています。
git - 複数のブランチとその履歴を使用して TFS から GIT に移行する
C:\>git tf clone https://companyname.visualstudio.com/DefaultCollection $/companyname/Main OldTFS --deep
これはメインブランチの履歴のみを取得します。だったgit tf
。
C:\>git tfs clone https://companyname.visualstudio.com/DefaultCollection $/companyname/Main --with-branches
マージ変更セットの 1 つでいくつかのブランチを取得した後、これは失敗しますPlease report this case to the git-tfs developpers! (report here : https://github.com/git-tfs/git-tfs/issues/461 )
。git branch
これをくれる
Sprint085 までのブランチと、かなりの数のリリース ブランチもあります。あれはgit tfs
git tf
履歴を適切に表示できるように、マージコミットを適切に作成する他のいくつかのブランチを取得できる方法はありますか?
svn - Clear Case から SVN への移行
クリア ケースで管理されているプロジェクトのバージョンを SVN に移行する予定です。そして、ポラリオンが提供する SVNImporter を試しました。小さな vob の移行には問題ありません。しかし、vob が大きい場合 (200mb)、ヒープのメモリ不足エラーが発生し ( -Xmx = 1024m を設定しました)、そのプロセスを実行するのが遅くなります。
CC から SVN への移行の経験があり、大きな clearcase vob で機能する他のオープン ソース ツールを知っている人はいますか? または、共有できる提案/ベストプラクティスは大歓迎です。
更新: クリア ケースのファイル、ブランチ、タグの履歴が必要です
git - git-svn 移行後: 移行されていないブランチを後で移行しますか?
最近、SVN から git に移行しました。残念ながら、トランクのみが移行されましたが、製品リビジョンのバグ修正用のブランチは移行されませんでした。8-{不足しているブランチを数か月後に移行することは可能ですか? 残念ながら、リポジトリの作業をしばらく行っているため、完全な移行を再度行うのは面倒です。
version-control - CVS リポジトリの RCS ファイル形式で、リビジョンとしての xy0.2 は何を示していますか?
バックグラウンド
CVS リポジトリからコードを回収しようとしています。私はreposurgeon
目的のために使用しており、git-fast-import
ストリームを取得するために次のツールを試しました。
cvs-fast-export
、エラーになります(循環分岐とされていますが、詳細は提供されていません)cvs2git
が続きgit-fast-export
、理解を超えて物事をマッシュアップしますgit-cvsimport
これはgit-fast-export
、これまでのところ最高の結果を生み出しますが、属していないブランチに何かを投げることになります。
この CVS リポジトリはさまざまな CVS バージョンで実行されており、タグとブランチは強制的に移動されています。これは、それらのブランチとタグをもうサルベージできないことを意味することを知っています。しかし、それはそうです。
それにもかかわらず、私は(さらに多くの中から)半ダースのブランチを持っており、ストリームMAIN
への変換中に保持することに興味がありgit-fast-import
ます。ターゲットの VCS はGit ではありませんreposurgeon
が、ポイントは入力をこのように処理し、出力もこのように処理することです。
アーティファクトを理解し、古いもの (孤立したリビジョンを含む) を前処理段階でrcs -o<rev>
(もちろん、私のレポのコピーで;)) きれいにするためには、どのようにrcsfile
フォーマット作業の内部。
rcsfile.py
からモジュールを変更した後の解析は簡単ですrcsgrep
。しかし、リビジョン番号、特に対応するデルタ+ログがないリビジョン番号が何を意味するかについての情報はまだ提供されていません。
私が見るもの
RCS ファイルのマニュアル ページによると、リビジョン ID の 3 番目のセグメントが 0 であってはなりません。
これが私がやったことです(実験として)。
- On
MAIN
: ファイルをコミットします (1.1
) - From
MAIN
: 分岐先BranchX
(1.1
) - オン
BranchX
: ファイルを変更します (1.1.2.1
) - オン
BranchX
: ファイルを再度変更します (1.1.2.2
) - オン
MAIN
: ファイルを変更します (1.2
) - オン
MAIN
: ファイルにタグを付けるfoobar
(1.2
) - From
MAIN
: branch toBranchX
、branch タグ ( ) を移動1.2
し、前のブランチを事実上孤立させます。1.1.2.x
- On
BranchX
: ファイルを削除 (1.2.2.1
) - オン
MAIN
: ファイルを変更します (1.3
) - オン
MAIN
: ファイルに強制的にタグを付けるfoobar
(1.3
) - オン
MAIN
: ファイルを変更します (1.4
) - オン
MAIN
: ファイルにタグを付けるfoobarbaz
(1.4
)
上記のリストと以下の完全に再現されたファイルでわかるように、1.2.0.2
ログ付きデルタの形でのリビジョンはありません。
今私の質問
リビジョンを新たに分岐するとx.y
(ファイルの変更はありません!)、結果のリビジョン ID はx.y.0.2
. これは、私が見て質問している謎のリビジョン ID に似ています。
0
ファイルにデルタがないことを示しているので、実際の内容については祖先に戻る必要がありますか?- それとも、0 は単にそのブランチの「ルート」を示し、4 番目のセグメントがそのブランチの最新リビジョンであることを示していますか?
誰かがこれらの質問に光を当てたり、上記のリンクされたマニュアルページよりも包括的な資料を指摘したりできますか?
以下は、完全な RCS ファイルです。
git - SVN から git への移行では .git フォルダーのみが作成される
svn から git に移行しようとしています。以下のツールを使ってやってみました
ただし、両方のツールは、.git
ファイルとフォルダーをチェックアウトせずに、フォルダーのみを作成しました (作業コピーを話します)。
git-svn
私は以下を実行しようとしました
私は正確に何を間違っていますか?
ps グーグルを試してみましたが、すべてのブログで、これらのコマンドの両方がすべてのファイルとフォルダーを含むローカル リポジトリを作成する必要があると主張しています。また、hg convert を使用して svn プロジェクトを mercurial プロジェクトに変換したこともあります。svn プロジェクトを mercurial プロジェクトに変換した後、hg up などを実行して、プロジェクトのすべてのファイルとフォルダーを取得し、そのプロジェクトを mercurial サーバーに簡単にプッシュできました。ここにあるのは .git フォルダーだけです。どのステップが欠落しているか、正確に何が間違っていますか?
git - Git は Mercurial フェーズに相当しますか?
Mercurial では、まだプッシュする準備ができていない作業を追跡するために、秘密のチェンジセットを定期的に使用しています。次に、一部のファイルに緊急の変更を加える必要がある場合は、公開リビジョンに更新し、その変更を行ってプッシュすることができます。未完成の変更セットがプッシュされることを心配する必要はありません。
いいえ:
gitでこれをどのように行いますか?