3

リビジョンの履歴が保持されるように、「バージョン管理システム」が一連の日付付きフォルダーであるレガシープロジェクトをSVNにインポートする簡単な方法を知っている人はいますか?

私が継承したプロジェクトはバージョン管理下になく、何百ものフォルダーがあり、それぞれの日付は次のようになっています: 2006-11-26、2006-11-27 など... (数週間) 何も変更されていない場合でも、フォルダー。

私が気に入っているのは、最も古いフォルダーで新しいリポジトリを作成し、すべてのサブバージョン コマンドを順次かつ自動的に適用して、後の各フォルダーを新しいリビジョンに変換するスクリプト/ツールです。

それが理にかなっていることを願っています。私の古いシェル スクリプターは、自分でこれに取り組もうとする誘惑にかられますが、a) 最初に想像したよりも多くの作業が必要であると確信しています。b) 時間の有効活用ではありません (私はシェル スクリプトの専門家ではありません)。シェルスクリプトを書く)、c) 誰かがすでにこれを行っているに違いない。

追加クレジット: スクリプト/ツールで、フォルダ名に基づいてタイムスタンプ プロパティも変更し、Subversion の履歴がより現実に近くなるようにします。

すべてが理にかなっていることを願っています。

助けてくれてありがとう。

PS 私はこれをすべて Linux で行いたいと思っていますが、(あえぎ!) Windows ソリューションがある場合、物乞いは選択者になることはできませんよね?

4

2 に答える 2

3

シェル スクリプトのソリューションはそれほど難しくないと思います。このようなもの:

for d in 200*
do
    cp -a $d/* svndir/
    cd svndir
    svn add *
    svn commit
    cd ..
done

私が知っているかなり素朴なコードですが、これに少し似たものが機能すると思います(svndirにチェックアウトされたリポジトリがすでに存在する場合)。おそらく、コメントを入力する必要をスキップする svn commit への引数があるでしょう。そうでなければ、これはかなり面倒です。

cp -a はタイムスタンプを保持しますが、もちろん svn 履歴には現在の日付にコミットされているすべてが表示されます。おそらく、「date」コマンドを使用して、コピーしてコミットするたびにディレクトリ名 ($d の値) に従って実際にサーバーの日付を設定することができます。ただし、それは少しやり過ぎかもしれません。

于 2008-10-17T20:37:05.270 に答える
2

この使用例では、load-dirs.plが作成されました。これは、ディレクトリを取得して Subversion にインポートし、名前の変更と削除のバージョン履歴を維持することもできます。Subversion リポジトリ内で適切なドキュメントを利用できます (上記のリンク)。

于 2008-10-18T15:12:50.523 に答える