問題タブ [cvs2svn]

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.

0 投票する
1 に答える
103 参照

cvs2svn - cvs2svn の出力にファイルがありません

最近、cvs2svn を使用して CVS リポジトリを変換しましたが、出力について混乱しています。ツールを実行すると、正常に実行されたように見えますが、SVN にファイルがありません。

実行後のツールからの出力は次のとおりです。しかし、私が自分のレポに行くと..そこには何もありません。

私の出力ディレクトリは次のようになります。

README.txt conf db フォーマット フック ロック

readme には次のように書かれています。

これは Subversion リポジトリです。「svnadmin」ツールを使用して調べてください。リポジトリの破損を避ける方法がわからない場合は、ここでファイルを追加、削除、または変更しないでください。

しかし、その中にファイルはありません。TortiseSVN を使用しようとすると、「URL のリダイレクト サイクルが検出されました」というエラーが表示されます。

0 投票する
1 に答える
60 参照

cvs - cvs2svn ツール : ライブ リポジトリで cvs2svn を実行できますか。私は実際のリポジトリを意味しますか?

CVS リポジトリを SVN リポジトリに移行する必要があります。CVS サーバーに cvs2svn をインストールしました。cvs2svn ツールをライブの CVS リポジトリ パスで直接実行できますか? URL " http://cvs2svn.tigris.org/faq.html#oneatatime " の FAQ には、自分のリポジトリのコピーで作業を実行する必要があると書かれています。cvsroot ディレクトリ パスを some/backup_dir にコピーし、backup_dir で実行する必要がありますか、それともチェックアウト コピーで実行する必要がありますか?

すべてのプロジェクトを一度に変換したくない場合はどうすればよいですか? 「開始する前にバックアップを作成することを忘れないでください。ライブ CVS リポジトリで cvs2svn を実行しないでください。常にリポジトリのコピーで作業してください。」

提案してください、私は移行に取り組んでいます。

0 投票する
1 に答える
356 参照

svn - svnadminロード/ダンプファイルが実行する最大制限は何ですか

cvs と Subversion 1.6 リポジトリを新しい Subversion 1.8 サーバーに移行しています。CVS ダンプには cvs2svn を使用し、svnadmin ダンプを使用してダンプ ファイルを作成し、新しい Subversion サーバーにロードします。私の CVS リポジトリの最大サイズは 8 GB で、Subversion リポジトリのサイズは 15 GB です。1. cvs2svn を使用して 8 GB の cvs リポジトリをダンプできますか? cvs2svn は 8 GB リポジトリのダンプファイルを作成し、このダンプを Subversion サーバーにロードできるようにします。2. svnadmin ダンプ (デルタではなく) を 15 GB リポジトリに使用できますか?また、新しいサーバーにロードできますか? cvs2svn conversion および svnadmin load および dump コマンドの実行にサイズ制限または制限はありますか? 私が従うことができるあなたのアプローチと提案を共有してください.

0 投票する
1 に答える
162 参照

python - cvs2git/cvs2svn でコミットのタイムスタンプはどのように生成されますか?

Cygwin経由でcvs2gitを使用して、非常に古くて巨大なCVSリポジトリをGitに変換しています。正常に動作し、新しいリポジトリのテストを開始しました。大きな特徴は見つかりませんでした。しかし、コミット/変更セットのタイムスタンプはどのように決定されるのだろうか。

これまでのところ、特定の CVS リビジョン間のタイムスタンプは、1 時間または 2 時間プラス x だけ異なると判断しました。x は、数秒または数分 (ほとんどの場合) から 2 15 分までの時間です。多くのタイムスタンプは、1 時間 (x=0) だけ異なります。

これは、cvs2svn 機能 ( http://www.mcs.anl.gov/~jacob/cvs2svn/features.html )であることがわかった「タイムスタンプ エラー修正」と何らかの関係があると思います。タイムゾーンも関係しているのかもしれません。

私のテストの結果は、変更セット内のファイルが 1 つだけのすべてのコミットが 1 時間も異なることを示しています。それは私の「タイムゾーン仮説」を支持します。しかし、それはまた、複数のファイルを持つ変更セットのタイムスタンプがどのように決定されるかという疑問にもつながります。

コードを調べてみたところ、(Google の助けを借りて) cvs2svn_lib の config.py に「COMMIT_THRESHOLD」があることがわかりました。これは、CVS 内のファイル ベースのコミットをまとめてファジングするために使用されると思います。コードはうまく書かれているように見えますが、CVS、SVN、および Git リビジョン ストレージの技術的な理解が不足しているため、理解するのが困難です。

したがって、誰かが次の質問に答えてくれれば幸いです。

  • cvs2svn/cvs2git は、複数のファイルを持つ変更セットのコミット タイムスタンプをどのように決定しますか?
  • 「タイムスタンプ エラー修正」cvs2svn/cvs2git はどのように機能しますか? (私にとっては、技術的な背景よりも機能的な背景の方が重要です。)

敬具

編集:

誰かがこの質問を「広すぎる」と考えたので、私は私の主張を十分に明確にしなかったことを恐れています. だから私は具体的な(フィクションですが)例を挙げたいと思います:

cvs2git は、1 つの変更セットに対して 3 つのファイル変更を検出しました。それらは同じ日にコミットされた場所です (2016 年 2 月 30 日としましょう)。しかし、それらの時間は異なります。

  • ファイル 1: 12:34:56
  • ファイル 2: 12:35:38
  • ファイル 3: 12:36:09

ファイル 1 のみの場合、cvs2git は 2016-02-30T12:34:56 を Git コミットのタイムスタンプとして使用すると思います。しかし、3 つのファイルすべてのコミットが 1 つの変更セットに属している場合、どのタイムスタンプが選択されるのでしょうか?

これに関連して、リポジトリが変換されると、時間も正確に 1 時間または 2 時間調整されるようです。これは、変更セットにファイルが 1 つしかない場合にも発生します。ある種のタイムゾーン調整だと思います。したがって、「タイムスタンプのエラー修正」によってタイムスタンプが変更された理由を知りたいので、これらの変更を受け入れるかどうかを確認してください。変換された Git リポジトリについていくつかの統計を行いましたが、コミット時間は原則として問題ないようです。しかし、それだけでは十分ではありません。

0 投票する
2 に答える
293 参照

git - 多数のネストされた CVS プロジェクトを処理する方法

以前にこれを行ったことがないので、私はおそらく初心者です... 古い CVS リポジトリを GitLab に移行しようとしていますが、ネストされた CVS プロジェクトを処理する方法がわかりません。私たちはそれらをたくさん持っています (つまり、約 1600 の .project ファイルが CVS リポジトリに点在しています)。約 10 年分のコミットがあり、合計で約 21GB あり、2 つの CVS リポジトリ ディレクトリにまたがっています。

一般的な構造は $client/$product ですが、これらのほとんどには多数のサブプロジェクト (多くの場合非常に多く) が含まれています。

私がこれまでに試したこと:

  1. モノリシック: より小さい CVS リポジトリをインポートしようとしました - 最初のパス 1 でメモリが不足し (メモリを追加することで解決)、パス 5 でディスク容量が不足しました (VMware データストアがほぼいっぱいであるため、実際にはディスクを追加できません -聞かないで!)。

  2. クライアント別: cvs2git は 1 つのクライアントで完了し、git --fast-import を実行しましたが、すべてのサブプロジェクトに気付きました。Git はマージされた履歴を気にしませんが、コーダーは気にします。プロジェクト全体が通常同じ CVS リポジトリ内にあり、プロジェクトのクローンを作成するプロセスが複雑になることがわかります。

  3. クライアント内のプロジェクトごと: (2) のプロダクションを使用して、find で深さ優先で CVS リポジトリを再帰し、.project ファイルを探します。git --fast-import でサブプロジェクトをインポートする前に、それぞれにサブディレクトリを作成し、それぞれで git init --bare を実行しました。毎回 cvs2git の BLOB ファイルとダンプ ファイル全体を変更する必要があるため、これにはかなりの時間がかかりました。最終的に適切な git 階層になったかどうかはわかりません。

だから... もうぐるぐるするのではなく、他の誰かがこの種のことをする必要があったに違いないと確信しているので、ここで尋ねようと思いました. どんなポインタでも大歓迎です。


[編集]:すべての提案と助けに感謝します。今は私の手に負えません - 彼ら (開発者) は、CVS プロジェクトを少しずつ移行することを決定しました。その目的のために、古い cvs は読み取り専用の参照として保持され、プロジェクトは git "pristine" にチェックインされるため、"BG" (git の前) の履歴については cvs を参照しますが、 「AG」の歴史、彼らはgitを参照します。

深くネストされたプロジェクトの問題については、Java のクラス階層に関係しており、各プロジェクトが 1 つのクラスに相当するという説明がありました。彼らのビルド プロセスには、cvs プロジェクトを自動的に Java .jar ファイルなどに変更する機能があります。そこにはたくさんのJavaがあります。