0

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

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

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

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

4

3 に答える 3

2

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

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

しかし、svn-load-dirs.pl スクリプトの使用を検討する必要があるようです。これについては、Subversion ブックの「ベンダー ブランチ」の章を参照してください。

于 2009-01-24T16:34:53.540 に答える
0

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

ディレクトリは若干異なります。Subversion は、フォルダ レベルでリポジトリ情報を保存します。そのため、新しいフォルダーを作成しても、Subversion への接続は自動的には確立されません。(TortoiseSvn のようなものを使用すると、多くのことを処理してくれます。)

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

于 2009-01-24T16:32:59.813 に答える
0

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

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

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

于 2009-01-24T16:42:38.220 に答える