からファイルを生成するために、私は、私は、ユーザーwww-data
が所有するトランク(/var/www/trunk
)の作業コピーのチェックアウトを持って、サーバー上でSVNフックがコミットファイル
trunk/file1.txt
trunk/file2.txt
trunk/fileR.txt
を持ってSVNリポジトリを持っています。
fileR.txt
はユーザーのみwww-data
(authz
またはsvnlook author
によるアクセスの制限)を除き、すべての人のために読まれます。 fileR.txt
はfile1.txt
とfile2.txt
をconcatentatingによって生成されなければならない:cat file1.txt file2.txt > fileR.txt
私が欲しいのスクリプトはサーバー上の作業コピーを更新している実行する必要があり、trunk/file1.txt
またはtrunk/file2.txt
のいずれかにコミットがあるたびに、ファイルを連結していることで、新しいfileR.txt
をリポジトリにコミットします。
私が気にしていたのは、上記のすべてを行うコミット後のフックでしたが、前回のコミットが確定されるまで、SVNが新しいコミットを処理できるかどうか、およびわかりません。
例:file1.txt
への変更を伴うcommit1が入り、pre-commitフックが実行されていれば、トランザクションがデータベースにコミットされ、コミット後のフックが実行されます。ポスト・コミット・フックは実際にcommit2を作成します。このcommit2は、commit1からのポスト・コミット・フックが実際に終了する前にファイナライズする必要があります。
SVNはこれを実行できますか?そうでない場合は、他にどのようなツールやワークフローを提案していますか?
おかげ
通常、ファイルをリポジトリ内の他のファイルから派生させることができる場合、そのファイルをリポジトリにまったくコミットしません。そのファイルを必要とする人は、必要に応じてそれを派生させることができます。他の2つを連結するだけで、リポジトリにfileRファイルを格納する必要があるのはなぜですか? –
1つの質問:fileRはなぜ存在する必要がありますか?ユーザーはfile1とfile2を別々に扱うことはできませんか?なぜあなたはこれをやりたいのかを理解するためには、もう少し文脈が必要だと思います。 –
'fileR'は従来の理由から存在する必要があります。私たちの研究グループでは、BibTeXを使って論文のすべての参考文献を作成しました(これはfileRです)。最近では、私たちが発行した論文と他の人が発行した論文の両方で 'fileR'を保つことは良い考えではなく、2つの別々のファイル(私たちのためのもの、世界の他のもの)に切り替えました。残念ながら、いくつかのスクリプトを使用して、研究グループ内の個々の人のための出版リストを自動的に生成します(変更したくない)。しかし、我々はまだレガシーファイルを保持したい。 – cdavid