trunk->branchへのsvn mergeでマージされないファイルがある
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 10K+
前提・実現したいこと
Subversionで管理しているソースコードがあり、以下のツリーで管理しています。
/---trunk
| __target.txt
|
\-branches
|
\-feature_00
__target.txt
※trunkおよびfeature_00には他にもファイルやサブディレクトリが複数あります。
この時、漏れなくtrunkの変更をbranches/feature_00にマージしたいです。
発生している問題・エラーメッセージ
特定のファイル(__target.txt
)だけ変更がマージされません。
・実行したコマンド
cd feature_00
svn merge --dry-run -r 100:HEAD ${TRUNK_URL} .
-> この結果、__target.txt
がマージ対象の一覧に現れないことがわかりました
この時、その他の変更があったファイルは"U"と表示されたり、"C"と表示されたりして正しくマージ対象として認識されています。
尚、r100はbranches/feature_00
でsvn log --stop-on-copy
した時の最初のリビジョン番号です。
特にエラー表示はありません。
また、--dry-run
を外して実際にマージしても同様で、__target.txt
はマージされませんでした。
確認のため、以下のことを実施しましたが、問題は見当たらないように思います。
・svn info
で、カレントWCが確かにbranches/feature_00
の作業コピーであることを確認
・リポジトリ上のファイルに差分があることを確認
svn diff ${TRUNK_URL}/__target.txt@HEAD ${BRANCH_URL}/feature_00/__target.txt@HEAD
-> 確かに差分があった
・branches/feature_00
のカレントWCはsvn update
済みでコミットされていない変更は存在しない
・svnユーザのホームディレクトリで.subversion/config
を見て、"global-ignores = "
と空欄になっていることを確認
・svn proplist __target.txt
を実行して、svn属性にも差分がないことを確認
補足情報(言語/FW/ツール等のバージョンなど)
・実行環境
Linux(CentOS 5.11(Final))に対してsvn+sshで接続
・Subversion
svn --version
= 1.6.11 (r934486)
・ターミナルソフト
RLogin 2.18.0
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
+1
本件、自己解決致しました。
以下に解決方法を記載します。
もし、同じような現象に見舞われた方がいらっしゃれば、参考になれば幸いです。
原因
不要なsvn:mergeinfo属性が残っており、subversionが「マージ済み」と認識していたため。
経緯
後からわかったことになります。
当初、このbranchに対してtrunkから最初にマージを行った際、コンフリクトの解消などの作業を行っていました。
その後、このマージを取り止めるためrevertか何か(この作業の経緯が不明です)を行ったのですが、その時にbranches/feature_00ディレクトリ直下にsvn:mergeinfo属性が記録されており、ここにマージ済みであるとういう情報が残されていました。
しかし、それに気付かず他の作業を行ってコミットしてしまったため、マージしていないのにマージ済みの情報が残ってしまって、それ以降マージが効かなかったようです。
対処法
svn logを使って現象がsvn:mergeinfoが記録されることになったリビジョンを特定し、そのリビジョンの変更を取消コミットします。
その後、マージを行うとsv merge --dry-runでも正しく変更があることを認識できました。
コメント
svn属性は気を付けないとハマることになるということを学習しました。
(そもそもsvnのオペレーションにミスがあったことは反省が必要ですが。。。)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.11%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる