0

Windows での SVN リポジトリのエクスポート (VisualSVN サーバーを使用) に関する以下のすべての質問に答えることができますが、まったくの初心者であるため、Linux では完全に迷っています。

Linux で SVN のエクスポート機能を使用して、リポジトリをコミットするたびに Web サイトを更新したいと考えています。しかし、それにはいくつかの問題があります。

私はこれら3つを読みました: 「svn export」コマンドを使用してリポジトリから単一のファイルを取得する方法は? http://www.duchnik.com/tutorials/2011/07/02/svn-command-reference http://www.picksourcecode.com/ps/ct/161055.php

post-commit フック内で使用する次のコマンドを見つけました。

svn export --force svn://localhost/repository_name /share/Web/projects/website

質問:

  1. なぜうまくいかないのですか?変更はリポジトリにコミットされますが、操作は「post-commit hook failed (exit code 255) with no output」で終了します。また、宛先 Web サイトが更新されていないため、post-commit フックが起動されていないようです。コマンド自体が魅力的に機能することを確認しました(またはダブルチェックしました)(コマンドラインから呼び出された場合)。post-commit フック内でのみ失敗します。このファイルの最後に「exit 0」を追加しようとしました。もちろん実行可能です。運がない。それでも、何度も試みた後、同じエラーコード。

  2. ユーザー名とパスワードをパラメーターとして指定していないのに、なぜこの操作が機能するのですか? リポジトリ内の「passwd」ファイルが適切に設定されており、外部クライアントからのすべての操作でユーザー名とパスワードを指定する必要があるか、そうでない場合は失敗します。SVNのバグ?

  3. 各コミット後にリポジトリ全体をエクスポートするのではなく、宛先にエクスポートされるファイルを変更/追加/削除のみに制限する方法はありますか?

  4. QNAP のローカル パスの代わりに、FTP 経由で、まったく同じ (エクスポート) を外部サーバーに行う方法はありますか?

ポイント 3 と 4 については、SourceForge から svn2web ツールを使用しようとしましたが、これはかなり悪い考えであり、機能していません。コミット後ではなくコミット前フックを使用します。つまり、エラーが発生すると、開発者は作業をコミットできなくなります (私の場合、コミット後 - 変更はコミットされ、宛先に伝播されません)。私のサーバーでは pre-commit フックが失敗し (上記のポイント 1 と同じエラー メッセージ)、フォルダ プロパティに「svn2web」プロパティを追加するアプローチ (解決策) は、純粋な Linux Subversion クライアントでは機能する可能性がありますが、使用すると完全に失敗するようです。 SVN クライアントとしての Windows 上の TortoiseSVN。

問題1(および2〜3、おそらく4)の解決策が、/ share/Web/projects/website内にローカルワーキングコピーをセットアップし、このリポジトリの定期的な更新にCRONを使用することではないのでしょうか? これは常に実際の変更のみを「エクスポート」し、適切なログインとパスワードがないと失敗する可能性があります。しかし、これは車輪を再発明するか、すでに開いているドアを開くことを余儀なくされているようです.

よろしくお願いします。

4

1 に答える 1

1

簡単にいくつかの答え:

  1. SVNデーモン(svnserve)がフックを実行するために使用するユーザーとは異なるユーザーとしてこのコマンドを実行していることを私は撃ちます。その他のユーザー (SVN によって使用される) は、エクスポートを実行するために必要なすべての権限を持っていない可能性があります。

  2. 残念ながら、私にはわかりません。SVNのインストールに何かが必要です。もちろん、これはまったく起こらないはずです。リポジトリが適切に保護されており、ログインとパスワードが必要な場合は、エクスポート操作であっても、誰もがそれを正確に提供する必要があります。

  3. 現在の(最後のもの - HEAD)リビジョンを前のものと比較し、変更されたファイルのみをエクスポートするスクリプトを拡張する必要があります。これは簡単な作業ではありません。ホイールを再発見しようとする前に、インターネットですぐに使える解決策を探してください。:]

  4. SVNのextractコマンドで直接いいえ?私の頭に浮かぶ最も簡単な方法は、ローカルパスに抽出してパックし、FTP経由で送信して、宛先で解凍することです。または、宛先でシェルにアクセスできない場合は、ファイルごとに直接送信して、アーカイブを解凍します。

うまくいけば、これらは役に立ちますか?:]

于 2012-07-04T10:06:58.350 に答える