私はRubyでプログラムを書いていますが、起動時にチームのソフトウェアの最新バージョンをSVNからダウンロードする必要があります。
(Ruby SVNバインディングからの)チェックアウト関数は、私のマシンのローカルの「トランク」ワークスペースに存在しないファイルを更新によって追加しないため、私が使用したいと思うものです。チェックアウトステートメントは、HEADと一致しないファイルを更新し、まったく存在しないファイルをダウンロードします。事実上、完全に再帰的なチェックアウトを実行した後、最新のSVNリポジトリの正確なコピーが欲しいと思います。
このAPIによると、チェックアウトステートメントは基本的に次のようになります。
- 正確なSVNURL
- ローカルルートプロジェクトディレクトリ
- リビジョン(文字列「HEAD」を使用します)
- 再帰的(整数1または0)
- プールオブジェクト(これが何のためにあるのか正確にはわかりませんが、影響はないと思います)
SVNリポジトリ内のファイルごとに反復するブロック内に私が書いたものは次のとおりです。
if status != NORMAL #any file that changed or is 'missing'
ctx.checkout(status.entry.url, ROOTDIR, 'HEAD', 0, nil) #update abnormal file to HEAD
end
テストとして、ローカルワークスペースからディレクトリを消去し、このコマンドを使用してディレクトリを復元しようとしました。欠落しているファイルの1つに到達するまで実行され、その時点でエラーが発生します。
`svn_client_checkout3':subversion / libsvn_fs_fs / tree.c:663:Svn :: Error :: FsNotFound:ファイルが見つかりません:リビジョン0、パス'/trunk/project-gadfly/SocketServer/DiscoveryServer.cpp'(Svn :: Error: :FsNotFound)
チェックアウトステートメントはディレクトリ(つまりファイル)がローカルに存在しないことを確認してから作成すると考えたため、このエラーが発生する理由がわかりません。おそらく私は何か間違ったことをしていますか?
私が書いたものを振り返ると、これはすべて、次の簡単な質問をするための長い道のりだったと思います。SVNRubyコマンドを使用してローカルハードドライブに最新バージョンのSVNリポジトリを取得するにはどうすればよいですか。
よろしくお願いします、エルウッド・ホプキンス