質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Subversion

Subversionは、使い方はCVSによく似た、CVS(Concurrent Versions System)を改良したバージョン管理ツールです。

SVN

SVNは、CollabNet社が開発したソースコードなどを管理する集中型のバージョン管理システムです。 Subversionとも呼ばれ、CVSの問題点を解決すべく開発された次世代のバージョン管理システムとして開発されました。基本的なコマンドはCVSと共通しています。複数人の開発者が共同でひとつのソフトウェアの開発にあたるときなどに、ドキュメント及びソースコードなどを管理するのに使用されます。

Q&A

解決済

1回答

18544閲覧

trunk->branchへのsvn mergeでマージされないファイルがある

sayhorn

総合スコア12

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Subversion

Subversionは、使い方はCVSによく似た、CVS(Concurrent Versions System)を改良したバージョン管理ツールです。

SVN

SVNは、CollabNet社が開発したソースコードなどを管理する集中型のバージョン管理システムです。 Subversionとも呼ばれ、CVSの問題点を解決すべく開発された次世代のバージョン管理システムとして開発されました。基本的なコマンドはCVSと共通しています。複数人の開発者が共同でひとつのソフトウェアの開発にあたるときなどに、ドキュメント及びソースコードなどを管理するのに使用されます。

0グッド

0クリップ

投稿2016/01/15 10:20

###前提・実現したいこと
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_00svn 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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

本件、自己解決致しました。
以下に解決方法を記載します。
もし、同じような現象に見舞われた方がいらっしゃれば、参考になれば幸いです。

原因

不要なsvn:mergeinfo属性が残っており、subversionが「マージ済み」と認識していたため。

経緯

後からわかったことになります。
当初、このbranchに対してtrunkから最初にマージを行った際、コンフリクトの解消などの作業を行っていました。
その後、このマージを取り止めるためrevertか何か(この作業の経緯が不明です)を行ったのですが、その時にbranches/feature_00ディレクトリ直下にsvn:mergeinfo属性が記録されており、ここにマージ済みであるとういう情報が残されていました。
しかし、それに気付かず他の作業を行ってコミットしてしまったため、マージしていないのにマージ済みの情報が残ってしまって、それ以降マージが効かなかったようです。

対処法

svn logを使って現象がsvn:mergeinfoが記録されることになったリビジョンを特定し、そのリビジョンの変更を取消コミットします。
その後、マージを行うとsv merge --dry-runでも正しく変更があることを認識できました。

コメント

svn属性は気を付けないとハマることになるということを学習しました。
(そもそもsvnのオペレーションにミスがあったことは反省が必要ですが。。。)

投稿2016/01/20 06:04

sayhorn

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問