ブランチ機能を使用せずに修正を加えたファイルのマージは可能か?

このQ&Aのポイント
  • ブランチ機能を使用せずに修正を加えたファイルをマージすることはできるのか?
  • /branches/20140717/フォルダへのコピーによる修正作業でもコンフリクトが発生した
  • /trunk/software/フォルダへのマージを試みたがコンフリクトが多発した
回答を見る
  • ベストアンサー

ブランチ機能使用していないコピーでマージした場合

/trunk/software/ このフォルダの中にcpp builder2009で作業中のプロジェクトのソースコードファイルなどを置いています。このフォルダ内のソースコードに修正を加えたいと思い、ブランチとして/branches/20140717/のフォルダにtortoise svnのブランチ機能を使用せずに、フォルダごとコピーしてきたファイルをペーストしました。 このフォルダ内で修正作業をして完了し、/trunk/software/のフォルダにマージすることは可能でしょうか? /trunk/software/でマージを行って見たのですが、コンフリクトが多発する状態でした。 /branches/20140717/フォルダを作成して修正している最中は/trunk/software/内のソースコードのテキストファイルであるcppファイルなどに変更はしていないのですが、それもコンフリクトを起こしました。 どうぞご教示頂きますよう、お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

ブランチしなかった、ということは、一からそのファイル群を作ったのと同じことです。 マージするファイルとの関連が不明となるので、「たまたま名前と内容が同じファイル」でしか無いので、衝突します。 全てのコンフリクトを(手動で)解決すれば「マージ」自体は可能です。

techhouse
質問者

お礼

回答頂きありがとうございます。やはり、ブランチするときはブランチ機能を使った方が、マージの時にとても楽ができそうですね。一応、手動解決もできるということがわかりました。助かります。

関連するQ&A

  • svnでマージ中止後からマージできない

    trunkフォルダ内のsoftwareというフォルダ内でcpp builder2009で作成のプロジェクトファイルで作業をしているのですが、修正などの編集を行いたくなり、softwareのフォルダをtortoise svnのブランチ機能で/branch/20140722_softwareというフォルダでブランチして、修正作業はこのフォルダ内で行いました。 一通り修正作業が完了したので、/trunk/software/のフォルダ内にマージ機能を使って見ようと思いました。 とりあえず現在の/branch/20140722_software/内で変更のあったソースコード関連のテキストファイル関連のファイルを/trunk/software/フォルダ内にマージをしたかったのですが、dfmという拡張子のファイルでconfrictが起こったようで、Abort mergeでマージを中止させました。 そして、競合があったファイルをResolveというのを/trunk/software/に行って、再度マージを行おうとするとマージが完了しているという内容が出てきました。 /branch/20140722_software/の最新リビジョン /trunk/software/の最新リビジョン この2つのフォルダをDFという比較閲覧ソフトで確認してみたところ、/branch/20140722_software/で変更をかけたソースコードのテキストファイルは/trunk/software/フォルダ内にはコピーされていない状態でした。 tortoise svnのマージの操作方法はこちらのサイトを参考にして実施しました。 http://hide.xsv.info/tips/svnmanual/merge1/ マージの種類としては”リビジョン範囲のマージ”というのを使用しました。 また、”マージするリビジョンの範囲(specific range)”というのはshow log機能で、/branch/20140722_software/が作成されたrev128から最後の修正までのrev168までを指定しました。 Merge depth:というのはWorking copyを洗濯 Compare whitespaces という機能ボタンをONにしてマージをしました。 なお、現在/trunk/software/の最新リビジョンで、/branch/20140722_software/の最新リビジョンからのファイルでマージしようとしても、できない状態なのですが、 ”マージするリビジョンの範囲(specific range)” この時の設定で”URL to merge from”で設定している/branch/20140722_software/フォルダのshowlogを見ると、 Actions:Modified Already merged とすべての変更があったリビジョンに表示されています。 たぶんですが、/trunk/software/フォルダは/branch/20140722_software/の内容を既にマージしているということになっているようなのですが、これを取り消す方法などをありますでしょうか? また、このようなマージ機能の使用方法として適切な方法などご教示頂きまうよう、よろしくお願い致します。

  • svnのマージの使い方。

    現在、Atmelのマイコンのプログラムファイルの管理をtortoise svnで行っています。 現在自分の使い方としては、trunkフォルダにリリースVersionのプロジェクトフォルダが入っていて、そのプロジェクトフォルダ内のファイルの検証や修正を行うためには必ずbranchフォルダにbranch機能でフォルダコピーしてからそのファイルの修正などを行っています。修正が完了した場合はtrunkフォルダのリリース版のファイルにマージして、branch側のフォルダは削除しています。 だいたいこのサイクルを繰り返しているのですが、共同作業者さんがbranchでの修正が先に終わってtrunkにマージしてリリース版が更新される場合があるのですが、現在の自分のbranch のファイルはリリース版のものからすると古くなってしまうので、現在の最新のtrunkのファイルを自分のbranchにマージする方法というのはありますでしょうか? 以前trunkのファイルを自分のbranchにマージしたら競合が多発して一部ファイルの更新内容がスムーズにいかなくなってしまったことがあり、現在避けているのですが、良い方法をご存知の方いらっしゃいましたらどうぞご教示頂きますよう、お願い致します。

  • Subversion ファイルのマージができない

    以下のページ等を参考にして TortoiseSVNでbranchからtrunkへのマージを試みましたがサブフォルダ以下のファイルのマージが行われません。 http://hide.xsv.info/tips/svnmanual/merge1/ 以下のようなフォルダ構成である場合、 Folder_A--File_A |----File_B |----Folder_B |-----File_C マージ元URLにhttp://localhost:8888/svn/branch/Folder_A を指定し、 マージ先URLにhttp://localhost:8888/svn/trunk/Folder_A を指定して マージを実行すると、File_A, File_Bはマージされるのですが、 サブフォルダ以下のFile_Cはスルーされてしまいます。 作業コピーのあるフォルダで、右クリック-[マージ]で表示される リビジョンの範囲をマージ 異なる2つのツリーをマージ で試してみましたがいずれもサブフォルダのファイルはスルーされてしまいました。 TortoiseSVNでは、サブフォルダのマージはできないのでしょうか。

  • Subversionでのソース管理方法

    よろしくお願いします。 Subversionを新規に導入し、ソースを管理したいと思います。 そこで運用方法についてご相談をしたく思います。 具体的には、「trunk」と「tags」、および「branches」という用語(ディレクトリ?)についてです。 要件としては、先ず初期開発があり、開発したソースは「trunk」配下に格納します。 開発が完了し、納品したソース一式は、「tags」配下にVersion1.0として保管する想定です。 ・・・・ ところがその後、バグや機能修正があり、ソースを修正する要件が発生したとします。 その場合に修正は、「branches」配下に「trunk」配下のソースのコピーを作成し、 「branches」配下のソースを修正するのが一般的な作法なのでしょうか?。 また「branches」配下で修正したソースを、「trunk」に合流させる操作を「マージ」と 言うのでしょうか?。 (この場合、納品した断面は「tags」配下のみになるイメージです) 上記2点の認識について問題ないか、アドバイス頂けますと助かります。

  • CVSコマンドrlogでブランチにつけたタグで実行したいがうまくいかな

    CVSコマンドrlogでブランチにつけたタグで実行したいがうまくいかない CVSコマンドのrlogを実行したいのですが、うまくいきません。 「cvs rlog: invalid branch or revision pair…」というメッセージが出ます。 ※「コマンド」と表現していますが、シェルの中で「FROM_TAG」「TO_TAG」 を指定し、連続的に指定ファイルのrlogを機械的に取得するという 処理を行ないたいと思っています。 コマンドは以下のような単純なコマンドです。 ------------------------------- PERIOD=${FROM_TAG}::${TO_TAG} cvs -d ${CVSROOT} rlog -N -r${PERIOD} ${ファイル名} ------------------------------- 指定しているタグはブランチに付与した「つもり」のタグです。 そこで、タグを確認してみたところ TO_TAGは確かにブランチに付与されていました。一方で FROM_TAGはtrunkに付与されていました。 「それが原因だろ」といわれるとそのとおりなのですが、 タグは確かにブランチを指定しタグを付与しました。 FROM_TAGをつけたのはブランチを作成した直後です。 つまり、trunkとまったく同じファイル。 なので、リビジョンはtrunk用の「1.n」のままです。 この時点で、ブランチの最新にタグをつけたのですが、 するとタグは「1.n」系のリビジョンにつきました。 ファイル自体はまったく変更していないので当然といえば当然です。 それではと、とりあえず以下のコマンドにしたところ一応うまくいきました。 ------------------------------- PERIOD=::${TO_TAG} cvs -d ${CVSROOT} rlog -N -r${PERIOD} ${ファイル名} ------------------------------- ただ、これが通用するのはブランチを作成してから 何も修正していない状態のファイルにだけです。 つまり、ブランチを作成してから、タグA, B, Cを打っており BとCを指定してrlogを取得するときに、 AとBの間、BとCの間で修正があったソースは成功するけれども BとCの間だけで修正があったソースは失敗してしまうことになると思います。 この現象を回避するコマンドの書き方はありますでしょうか? タグのつけ方が何か悪いのでしょうか? タグを適切につけたらこのようなことはおこらないのでしょうか? (SVNならこんな苦労はしないはずなのに…とも思っています) 対応方法・アドバイス等よろしくお願いします。 (SVNを使ってとかはナシで)

  • TortoiseSVNにてサーバー上の共有フォルダにブランチを作成でき

    TortoiseSVNにてサーバー上の共有フォルダにブランチを作成できない。 TortoiseSVN-1.6.8にて下記サイトを参考に、サーバー上の共有フォルダにブランチ/タグを作成し、 ファイルのバージョン管理を行おうとしています。 http://www.ipl.co.jp/item/Subversion.html サーバー側の共有フォルダに対して、branches以下に好きなフォルダ名でブランチを作ります。 にて、リポジトリのURLを指定し実行すると、下記エラーが表示されます。 ==================================================================================================================================== コマンド   file://【サーバーのIPアドレス】/kaihatsu2/SVN_SOFT/branchies/test2からfile://【サーバーのIPアドレス】/kaihatsu2/SVN_SOFT/test1/branchies/test2 へのコピー、リビジョン 2 エラー    URL に対し ra_local セッションを開始できません エラー    'file://【サーバーのIPアドレス】//kaihatsu2/SVN_SOFT/test1' を開けませんでした 終了! ===================================================================================================================================== サイトに書かれている内容通りに作業したのですが、何が悪いのか分かりません。 解決法をご存知の方おられましたら、ご教授お願いできませんでしょうか? よろしくお願いします。

  • SVNのブランチにおける以前のverとの差分

    SVNで、ブランチを作成しました。 ブランチにおいて、たまたま、ブランチ前のファイルとの差分を確認したくなりました。 そこで、 TortoiseSVN>ログの表示>「リビジョンを選択」>右クリック>作業コピーと比較 をしようとしたところ、 TortoiseSVN>ログの表示 の時点で、ブランチする前までのリビジョンが現れず、方法を変えなければなりませんでした。 トランクのファイル と ブランチのファイル とを展開して、WinMergeのようなツールで比較するしかないのでしょうか? TortoiseSVN内で、ブランチ前のソースとの比較方法をご存知であれば教えてください。

  • 「マージする」とは?

    素朴な疑問で恐縮ですが。。。 「マージする」とはどのようなときに使用するのでしょうか。 2人以上で開発しているプロジェクトで、ソースファイルを合わせる場合にも使用するのでしょうか。 ・新規作成したソースファイルをプロジェクトに含めたり。 ・同一のファイルを2人で編集してしまった場合に変更部分を合わせる作業。 以上、よろしくお願いいたします。

  • codebreakで自SVNリポジトリ使用OK?

    現在codebreakというバージョン管理のホスティングサービスについて調べています。 http://codebreak.com/ja/ ソースコードの管理を複数の人と行う必要があり、今まで事務所内でwindowsの共有機能を使用してtortoise SVNでSVNリポジトリフォルダにアクセスしてバージョン管理を行っていたのですが、事務所外のリモートの人ともバージョン管理ソフトでファイルを共有したいと思っています。 いろいろと調べてみるとcodebreakというホスティングサービスを見つけたのですが、 たとえば、今までSVNリポジトリフォルダに貯めてきた履歴情報をこのcodebreakというホスティングサービスに移行させる方法はありますでしょうか? なお、このソースコードは非公開型で取り扱いたいと考えております。 どうぞ、ご教授頂きますよう、お願い致します。

  • TortoiseSVNにてサーバー上の共有フォルダにブランチを作成でき

    TortoiseSVNにてサーバー上の共有フォルダにブランチを作成できない。 と質問させて頂いた者です。間違えて締めてしまったので再度質問させて頂きます。 TortoiseSVN-1.6.10にて下記サイトを参考に、ローカルからサーバー上の共有フォルダにブランチ/タグを作成し、 ファイルのバージョン管理を行おうとしています。 http://www.ipl.co.jp/item/Subversion.html リポジトリのURLを指定し実行すると、下記エラーが表示されます。 ==================================================================================================================================== コマンド: C:\test から file://【サーバーのIPアドレス】/kaihatsu2/SVN_SOFT/branches/testa へのコピー、リビジョン HEAD エラー: URL に対し ra_local セッションを開始できません エラー: リポジトリ 'file://【サーバーのIPアドレス】/kaihatsu2/SVN_SOFT' を開けませんでした 終了! ===================================================================================================================================== サイトに書かれている内容通りに作業したのですが、何が悪いのか分かりません。 解決法をご存知の方おられましたら、ご教授お願いできませんでしょうか? よろしくお願いします。