2

現在、バージョン管理サーバーとしてSourceAnywhere Hostedを使用しています。GitHub への移行を検討しており、8 年以上の歴史を維持したいと考えています。

他の誰かがこの移行を正常に完了し、ツール/プロセスを共有しようとしていますか?

今、これが以前に行われたことがないと仮定するとfast-import、SourceAnywhere SDK またはコマンド ライン クライアントを使用して git スクリプトを作成することを考えていると思います。git は初めてなので、出発点として紹介できる既存のスクリプトやリソースはありますか?

4

3 に答える 3

2

ようやくプロジェクトをクリーンアップし、GitHub に追加しました。ここで見つけることができます: SAWHtoGit

いくつかの小さな制限はありますが、履歴を論理的な変更セットにエクスポートするという非常に優れた仕事をします。

  • SourceAnywhere API の制限により、SourceAnywhere で削除されたファイルは履歴にインポートされません。
  • 古い/新しいディレクトリのマッピングを提供する限り、「移動」されたファイルはすべてインポートできます。

それ以外は、私たちの目的にはうまく機能し、コードと履歴を GitHub に正常に移行することができました。他の人にも役立つことを願っています!

于 2013-02-05T23:41:25.997 に答える
1

インポート部分は簡単です。最初のレポから首尾一貫した
一連のファイル を抽出したら、それを git レポジトリに追加して、変更/追加/削除を検出します。

「コヒーレント」 = 「コンパイルする」などの安定した状態を表すファイルのセット: これらの時点は通常、特に SAW のようなファイル レベルで動作するレポではラベルで表されます (git とは対照的に、リポジトリ レベルで機能し、各リビジョンは完全なリポジトリのコンテンツを表します)

一連のファイルを git に追加するのは、次のように簡単です。

git --work-tree=/path/to/extracted/file --git-dir=/path/to/git/repo/.git add -A
git --work-tree=/path/to/extracted/file --git-dir=/path/to/git/repo/.git commit -m "new revision from SAW import"

問題は、何をインポートするかを決定することです。
すべてのラベルをリストし、それらを使用してすべてのプロジェクトを取得することをお勧めしますGetProject -label( SAW CLIを使用)

各プロジェクトは独自の Git リポジトリにある必要があることに注意してください。これにより、すべてのプロジェクトを 1 つの参照に配置できる SAW を使用した集中型モデルとは対照的に、複製が困難な大規模な肥大化したリポジトリを回避できます。


OPダンコメント

SourceAnywhere COM SDK を使用して、履歴を抽出するための小さなユーティリティを作成し (SDK が許可する限り)、高速インポート スクリプトを作成してすべてを git に読み込むことができました。
すべての中間チェンジセットが必ずしも「首尾一貫」しているわけではありませんが、最終結果は現在の状態と一致し、履歴の大部分を保持しています。

于 2013-01-07T08:57:11.587 に答える
0

他の git-over-XYZ 実装がどのように機能するかを確認できます。たとえば、これは git-svnのコードであり、これは git-cvsimport のコードです(どちらも Perl)。

于 2013-01-07T06:02:08.123 に答える