SVNでのマージ後に変更をコミットできません
-
03-07-2019 - |
質問
TortoiseSVNを使用してプロジェクトの2つのブランチをマージした後、変更のコミットで問題が発生しました。
詳細は次のとおりです:
作業中の project のトランクにマージブランチを作成しました。
Project には、メインリポジトリと、 project のサブディレクトリとして svn external (ライブラリも分岐)としてメインリポジトリに結合されたライブラリが含まれます。
変更をコミットしようとしたとき、TortoiseSVNは次のように述べました。
Commit A
re all the targets part of the same working copy?
Unable to lock 'D:\websites\project\lib'
Please execute the "Cleanup" command.
もちろんクリーンアップは役に立ちませんでした。
project ディレクトリのsvn:external キーワードは適切に定義され、 lib フォルダーには適切なバージョンのライブラリ(トランクバージョン)が含まれていました。
SVNサーバーとクライアントは両方とも1.5.xバージョンです(TortoiseSVNは1.5.3.xです)。
技術的な観点から、 project と libraries は同じSVNリポジトリ内のプロジェクトです。
何がうまくいかなかったのか?
私はソリューションを少しグーグルで探していましたが、有用なものが見つからなかったため、2つのステップで変更をコミットしようとしました。
- プロジェクトフォルダから変更をコミットする
- ライブラリフォルダから変更をコミットする
問題なく機能しました。
しかし、なぜ私は一度のコミットですべてをコミットできなかったのか疑問に思っています。
編集:
- (Ken Gの回答後)TortoiseSVN 1.3.xの修正バージョン-> 1.5.3.x。
解決
svn:external により、Subversionはチェックアウト時に異なるリポジトリパスを結合しますが、最終的にはそれらのパスはまだ「ばらばら」なので、2つのコミットを行う必要があります変更を適用します。
そしてSubversionはまだ本当に動作します ばらばらでない作業コピー上のみ。 したがって、たとえば、コミットしたい場合 1つで行った変更または これらの外部作業コピーの多く、 svn commitを明示的に実行する必要があります それらの作業コピー— プライマリ作業コピーは再帰しません 外部のものに。
他のヒント
TortoiseSVNの1.3は非常に古いであり、最新のリビジョンは1.5.xです。 1.3以降、SubversionとTortoiseSVNの両方に多数の変更が加えられているため、おそらくクライアントのアップグレードが最善の策です。
とはいえ、1.5 TortoiseSVNは作業コピーをバージョン1.5形式に作成/更新する予定です。以前のSubversionの作業コピーに対してTortoiseSVN(または任意のSVNクライアント)を使用する場合は、非常に注意してください。
TortoiseSVNでこれに関連するバグについて読んだことを覚えていると思います。これは最新リリースで修正されています。最新のリリースノートを確認してください。