同じSubversionリポジトリディレクトリに複数回インポートしますか?

StackOverflow https://stackoverflow.com/questions/476233

  •  20-08-2019
  •  | 
  •  

質問

いくつかの理由により、私が持っているいくつかのファイルの正規のソースはリポジトリの作業用コピーにはなれません(Subversionサーバーはアクセスできないファイアウォールの背後にあり、データは私の好みの構造)。そこで、データをダウンロードし、そこからディレクトリ構造を生成し、SharpSvnを使用して結果をリポジトリにインポートするツールを作成しました。これは動作します<!>#8230;初めて。もちろん2回目は、その名前のディレクトリが既にリポジトリに存在するため、再度インポートすることはできません。

代わりに、次のことができました。

  1. ディレクトリを削除し、 then インポートします。私はこれをテストしていませんが、馬鹿げているように聞こえるだけでなく、それぞれのファイルの改訂履歴も削除します。新しいファイルは完全に異なると見なされます。
  2. ディレクトリが存在するかどうかを確認し、チェックアウトし、正規のソースに存在しなくなったファイルをリモートで削除し、残りを置き換えてコミットします。これはおそらく動作しますが、エラーが発生しやすく、不必要に難しいと思われます。

ファイルを削除すると、異なるファイルと同じ方法で新しいファイルがマークされるという仮定は正しいですか? 2番目のアプローチより簡単な方法はありますか?

役に立ちましたか?

解決

1)の場合、改訂履歴は削除されませんが、新しいファイルは古いファイルとはまったく関係がないものとして扱われます。それでも古いファイルを取り戻すことができます。

2)では、それが推奨される方法です。ただし、既存のファイルを「svn delete」して新しいファイルを追加したら、コミットする前にそれらの新しいファイルを「svn add」する必要もあります。

しかし、svn-load-dirs.plスクリプトの使用を検討する必要があるようです。これについては、Subversion bookの<!> quot; ベンダーブランチの章をご覧ください。 <!> quot;。

他のヒント

Subversionは、ファイルへの接続が緩やかです。フォルダー内のファイルについては、取得/更新を簡単に実行し、大規模な変更(ファイルの削除、置換、追加など)を行ってから、差分をコミットできます。このファイルレベルの動作は、一般的なSubversionの使用法です。

ディレクトリは少し異なります。 Subversionは、フォルダーレベルでリポジトリ情報を保存します。そのため、新しいフォルダーを作成しても、Subversionへの接続は自動的に行われません。 (TortoiseSvnのようなものを使用して、それの大部分を処理します。)

生成プロセス中にディレクトリを追加および削除する場合、ファイル自体とは若干異なる問題が発生します。ただし、コマンドライン、SharpSvn、TortoiseSvn、またはその他の同様のツールを使用して目標を達成できます。

ディレクトリを上書きできないか、.svnディレクトリを破棄してすべてのリポジトリ情報を失うため、ファイルをコピーする必要がありますが、新しいディレクトリを作成するだけです。これは私がそれを行う方法です、あなたが更新したいsubversion作業コピー内から:

(cd <newdirectory> ; tar -cf - * ) | tar -xf -

Unix-yシステムが必要であることを認めました。 Windowsがシステムレベルでフォルダーを上書きすることで特に奇妙なことをしない限り、 Cygwin で動作するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top