Windows セキュリティを使用して、ユーザーが SVN クライアントのサーバーからファイルを削除するオプションをブロックしました。(リポジトリ ディレクトリを右クリックし、セキュリティ オプションを選択します)。
ここで、ローカル ディレクトリをサーバーにコミットしたいのですが、ディレクトリから 1 つのファイルを削除しました。削除する権限がないというエラーが表示されます。
これをバイパスする他の方法はありますか?
Windows セキュリティを使用して、ユーザーが SVN クライアントのサーバーからファイルを削除するオプションをブロックしました。(リポジトリ ディレクトリを右クリックし、セキュリティ オプションを選択します)。
ここで、ローカル ディレクトリをサーバーにコミットしたいのですが、ディレクトリから 1 つのファイルを削除しました。削除する権限がないというエラーが表示されます。
これをバイパスする他の方法はありますか?
なぜあなたはこれをやっている?まず、リポジトリ (サーバー側) のセキュリティ権限は、実際にはクライアントのアクセス権限とは何の関係もありません。
ここで、削除を本当にトラップするかどうかを自問する必要があります。svn では、いつでもすべてを元に戻すことができます。削除をコミットすると、svn は物理的に何も削除せず、「このリポジトリのリビジョン x で、ファイル y が削除されました」のような内容を記録するだけです。後続のチェックアウト/更新では、明らかにそのファイルはもうチェックアウトされませんが、削除は簡単に元に戻すことができます ( svn revertを参照)。
ユーザーが削除をコミットするのを防ぐ必要があると確信している場合は、svnlook ツールを使用してコミットされているトランザクションを調べることができるpre-commit フック スクリプト を作成する必要があります。削除が含まれている場合は、ゼロ以外の値でフック スクリプトを終了します。
tortoisesvn リポジトリ ブラウザを使用してファイルを削除しても、既存のファイルはリポジトリを含む Windows ディレクトリから削除されません。実際には、ファイルが削除されたという記録と、その記録に関連付けられたコメントの 2 つのファイルが追加されます (簡単にしました)。
ただし、リポジトリに変更を加えるには、サーバーがリポジトリを含む Windows ディレクトリからファイルを削除できる必要があります。変更は最初に新しいトランザクション ファイルに記録され、次にトランザクションに従ってリポジトリが変更され、次にトランザクション ファイルが削除されます。これは、ファイル内のコメントを変更するだけであっても、すべての変更で発生します。リポジトリのディレクトリで通常のファイル操作を禁止すると、リポジトリが破損します。
tortoise svn を使用してファイルを削除することと、作業コピーをチェックアウトしてファイルを削除し、結果をコミットすることの間に機能上の違いはありません。必要な権限と構造上の変更はすべて同じです。同じフックはすべて同じ順序で起動され、同じ情報を取得します。どちらもファイルが削除されたことを示すリビジョンを記録し、そのリビジョンはどちらの場合も元に戻すことができます。活動を切り離すことはできません。どちらかを防げば、もう一方も防げます。