2012-02-10 6 views
0

私はLinuxでワークフローを改善するために取り組んでいます。現在はWindowsでバージョンコントロールを見ています。私には十分な機能を提供するtortoiseSVNがありますが、Linuxではこれまでにコマンドラインコマンドを使用します。これはうまくいきますが、明らかに物事を表示するためのGUIがあれば、生産性が向上します。履歴の詳細を表示するために自分のリポジトリホストから提供されたWebインターフェイスに依存し始めていることがわかりました。私はEclipse CDTをかなり楽しんでいるので、私はSubclipseが動作しているので、これは私が今使っているツールだと思います。Subclipseと一般的なSVNブラウザの使用

Subclipseで何かをクリックするたびに、1-2秒待つのが生産性の向上につながりません。明らかに、毎回リモートリポジトリにアクセスしています。

各ファイルに関連する統計情報をすぐにロードできるようにシステムを設定する方法はありますか?私は本当にフォルダをすばやくスキャンできることが大好きです。私は、「大きな絵」を私の心に新鮮に保つのに役立ちますが、今のように長い時間がかかる場合、これを行うつもりはありません。

ローカルマシン上にリポジトリのクローンを作成した場合、すぐにデータにアクセスすることができます。これのボーナスは、Windows上でTortoiseSVNのログをブラウズする際にも気分がいいことに気づくでしょう。たとえば、両方のOSにアクセスできるようにしておけば、NTFSパーティション上に置くことができます。

これで、変更がコミットされるたびにリポジトリをローカルディスクに複製する必要があります。どのように私はこれを自動化することができますか?

私は、SVNチェックアウトコピーにこれらのブラウザがアクセスしているリポジトリデータがすべて含まれていないと推測しています。チェックアウトされたローカルコピーにリンクするオプションを探すのは良いことではありません:注釈付きファイルを表示するためのデータはありません。ローカルチェックアウトコピーにはファイル自体(チェックアウト時に指定したリビジョン)と.svnディレクトリにあるメタデータが含まれます。

私はこれが間違っている場合は私を修正してください。私は実際のドキュメンテーションを読んでいるのではなく、ソフトウェアを使用した経験からこれらの結論をまとめました(私はしたかったが、本当に時間を費やすことはできません)。

更新:ちょっと掘り下げた後、私が必要としているものを正確に行うために設計されたコマンドがあるようです。svnsync。私は実際には私のリポジトリをバックアップしていないので、私は実際には何もねじ止めしたくありません。手動でセットアップしなかったので、私はUnfuddleの無料サービスを利用しています。

ミラーが設定されると、更新がコミットされると自動的に同期するようになると、キャッシュとしてもバックアップとしても機能します。それは非常に便利だろう。リポジトリの読み取り専用ミラーから直接チェックアウトできるかどうかは疑問です。それは意味をなさないでしょう。私はそれに変更を加えることができないだろう。

私の本物の質問は、この種の同期/ミラーのレポを設定するにはどうすればいいですか?私はネットワークや何かにローカルリポジトリをホストするつもりはない、私が望むのは、このローカルリポジトリからデータを引き出すためにSVNクライアント(SubclipseまたはTortoiseSVN)に伝えることができることだけです。 1つの潜在的な落とし穴は、同期をセットアップするために私のベースリポジトリにどのようなアクセス権があるかわからないということです。概念的には、読み取り専用の操作でなければなりませんが、変更をコミットしたときに何らかの形で更新を「プッシュ」できる必要があります。

アップデート2:私は/tmp/で地雷を入れていなかったが、それは非常に簡単です

svnadmin create /tmp/localsvn 
echo '#!/bin/sh' > /tmp/localsvn/hooks/pre-revprop-change 
chmod +x /tmp/localsvn/hooks/pre-revprop-change 
svnsync init file:///tmp/localsvn https://your.unfuddle.com/svn/your_root 
svnsync sync file:///tmp/localsvn 

:さてさて、私はhelpful blog postを発見し、このコードは私に重複レポを与えました。

このレポへのアクセスは、Subclipseでうまく機能します。それはかなり速いです。

ここで問題は、ローカルリポジトリをコミット時に自動的に同期させる方法です。

アップデート3:ミラーにアクセスするには、基本的にサーバにpost-commitpost-revprop-changeフックを設定してsvnsyncを呼び出す必要があるようです。それは実際には他の方法でもできないし、それは意味をなさない...

私はちょうど私のローカルレポを更新したいときはいつもスクリプトを作り、それを呼ぶことになると思う。

+0

純粋な読み取り専用(* users *用)リポジトリを使用するには、** pre-revprop-change **をミラー化する必要があります。 *ミラーリングされた*リポジトリのpost-commitフックの代わりに、* mirror *リポジトリのcron-jobを使うことができます - コストは同期のわずかな遅延です –

+0

これは良い考えです。 –

答えて

0

この質問に対する回答はgitです。私はそれにとても満足しています。

関連する問題