2011-06-20 4 views
0

フォルダ全体を削除して再作成してからファイルを投入することによって、フォルダの内容を更新するプロセスがあります。残念ながら、svnが不幸になる.svnフォルダは削除されます。どのプロセスを使ってフォルダを削除し、いくつかのファイルを書いてから、svnに差分を再確認するよう指示することができます(つまり、同じ名前のファイルを更新した内容を認識しました。追加されました)?このソリューションは、プロセスで削除/再作成されるため、サブフォルダでも機能するはずです。Subversion - ディレクトリを削除/再作成した後に変更を調整する

+0

なぜ単に削除して再作成するのですか?これのユースケースは何ですか? –

+0

サードパーティのソフトウェアは、削除/再作成によって更新を行っているため、プロセスを制御することはできません。高レベルでは、このソフトウェアは、各プラグインがフォルダ内に含まれている「プラグイン」(プラグイン固有のコード/データ/などを含むサブフォルダ)を更新しています – SFun28

答えて

2

あなたが探しているものが混乱しています。フォルダとデータを作成するプロセスがある場合、Subversionにフォルダとサブフォルダを保存する理由は何ですか? Subversionは、ソース用であり、生成されたコンテンツ用ではありません。

何をやっているのか、その理由をもう少し説明したいと思います。

誰かにRobohelpを使用して、私たちがソースコードで持っていたHTMLファイルを維持しました。 RobohelpはMS-Word文書からHTMLファイルを生成します。再生成を行うとき、ファイル名、サイズ、ディレクトリは、ほとんどの変更を加えても変更される可能性があります。古い方法では、すべてを削除して読み返していました。これは、技術者が1つのSubversionリビジョンで何千もの変更を行い、難しかったのです。

最後に、SubversionにWordのdocファイルを保存しました。生成されたHTMLは削除されました。しかし、私たちはすべてのHTMLを含む単一のZIPを保存しました(UnixビルドプロセスはRobohelpからHTMLを生成できなかったので)。新しいヘルプファイルのセットが再生成されたとき、Techライターは単にそれを圧縮し、Subversionリポジトリのzipファイルを置き換えました。大量の追加や削除は不要です。

誰かがSubversionからSubversionに行っている作業を同期しようとしていますか?たとえば、誰かがsvn exportを介してファイルをダウンロードし、その作業を行い、すべての変更をチェックインするのはあなたの仕事です。その場合は、ディレクトリ#1のすべてを調べてディレクトリ#2のすべてのものと比較し、そのように変更するための小さなスクリプトを書く必要があります。私たちは3回のパスでこれをやったと信じています。最初に、ディレクトリ#2にないすべてのディレクトリを削除し、次にディレクトリ#1にないディレクトリ#2のすべてを追加します。最後に、ディレクトリ#1とディレクトリ#2のすべてのファイルの比較を行い、これらの変更をコミットします。

+0

これは非常に痛みが私のビルドプロセス(主にパフォーマンス/信頼性のPOV)を介してこれらのフォルダを更新する場合は、大げさな詳細に入ることなく。更新自体には少しの看護が必要で、プロバイダのサイトの接続性のために失敗することもあります。失敗した場合は、テキストファイルの解析によってエラーを検出する必要があります。)言い換えれば、私はそれぞれのビルドで実行したいものではなく、ローカルマシン上で時々実行して変更をチェックインするプロセスです。 – SFun28

+0

@ SFun28:[git-svn](http://www.kernel.org/pub/software/scm/git/docs/git-svn.html)を見ましたか?リポジトリとの接続が悪い場合は、Subversionに問題があり、中央リポジトリが必要になります。魔女はしません。 Git SVNを使うと、Subversionサーバと話しているときにGitをローカルで使うことができます。これがあなたのために何をするか正確には分かりませんが、役立つかもしれません。 –

+0

@ SFun28:Subversion 'svn co'と' svn export'はどうですか?あなたは 'svn export'ディレクトリを' svn checkout'ディレクトリにコピーすることができます。これで大規模な変更が可能になりますが、コピーは '.svn'ファイルには触れません(エクスポートにはそれらがないため)。 –

0

これは自分でスクリプト/コードする必要があります。

すべての.svnフォルダをバックアップし、3パーティーがその作業を完了した後に元に戻します。2.作業コピーを近くに保管し、1.作業コピーからすべてのファイルをコピーします。 3.パーティーが更新されました。

次に、削除されたファイルはすべてsvn statusで、 'D'とマークされたファイルはsvn rmであることがわかります。新しいファイルをsvnステータスで見つけ、?とsvnとマークしてください。

最後に、svn commitを実行します。

関連する問題