⇧ 参考意見にするぐらいなら良いとは思うけども...
EclipseのSubversion(Subversive plug-in)でバージョン管理外のファイルで競合の編集できない
最近のEclipseであれば、
⇧ デフォルトでSubversionが利用できるようになっているようなのです。
まぁ、昨今の開発では、バージョン管理ツールとしては、Gitを利用することのほうが多いとは思いますが。
で、複数人での開発をしている時にバージョン管理してれば、ファイルの競合などがあった場合に知らせてくれるわけなのだけど、EclipseのSubversionでバージョン管理されていないファイルで競合の編集ができないのに、競合の状態という謎事象が起きて四苦八苦しました。
バージョン管理されていないファイルというのは、
⇧ ローカルで作業していて新規に作成したファイルで、サーバー側のリポジトリ(リモート)にコミットしていないようなものですかね。
更新していると時々、手元に同じ名前のファイルがあるというメッセージを出して、更新が失敗することがあります。典型的には、Subversion で新しいバージョンのファイルを取得したときに、すでに作業フォルダにバージョン管理外の同じ名前のファイルがある場合に発生します。Subversion がバージョン管理外のファイルを上書きすることはありません。偶然他の開発者が同じファイル名で作成し、コミットしてしまった場合など、あなたの作業した内容が何か含まれているかもしれないからです。
他人の修正に伴う作業コピーの更新 | TortoiseSVN Subversion クライアント for Windows
このエラーメッセージがでた場合、簡単な解決法は手元にあるバージョン管理外のファイル名を変更することです。名前を変更したファイルがまだ必要かどうかチェックもできます。
他人の修正に伴う作業コピーの更新 | TortoiseSVN Subversion クライアント for Windows
⇧ う~む、自分がやりたかったことは、ローカルのバージョン管理外になってるファイルの内容を反映したいのであって、ファイル名を変えたいわけではないのですな。
謎なのは、バージョン管理されてないファイルなのに競合が起きるのがよく分からないのですが、競合が解決されるまで、バージョン管理にも追加できない状態で八方塞がり的な状況でした。
致し方ないので、ローカルでの変更を、サクラエディタなどのテキストエディターに退避しておき、
There are two types of overriding operations: 'override and commit' and 'override and update'. The overriding means replacing one resource with another (local with remote for updating and vice versa for committing). To start these actions click on 'Override and Commit' or 'Override and Update' of resource pop-up menu items in the 'Synchronize View'.
Note: |
The user should be very accurate while using this operations to avoid ignoring some valuable changes. |
https://www.eclipse.org/subversive/documentation/teamSupport/SVNaction/override.php
⇧ 上記の説明にあるように、「override and update」、Eclipseの日本語だと、「チーム」>「オーバーライドおよび更新」になるのかな、を選択して、リモートの内容でローカルを上書きしてから、退避していたローカルの内容を反映してコミットしました。
ちなみに、
⇧「revert」と「override and update」の違いは上記サイト様を参考。
それにしても、SubversionってGitより歴史が旧いはずなのに、意外と知りたい情報が出てこない...
もしかしたら、
リポジトリから自分のファイルを更新・マージしたり、別の URL に作業コピーを切り替えたりすると、時には 競合 することもあります。競合には以下の二種類があります。
複数の開発者が、同じファイルの同じ行を変更すると、ファイルの競合が発生します。
開発者がファイルやフォルダーの移動・名前変更・削除を行い、別の開発者も移動・名前変更・削除を行ったり、単に変更すると、ツリーの競合が発生します。
https://tortoisesvn.net/docs/release/TortoiseSVN_ja/tsvn-dug-conflicts.html
⇧ ツリーの競合で対応ができたのかもと一瞬思ったのですが、
Conflict Resolution area have following options:
- Apply local changes. In this case incoming changes will be rejected.
- Apply incoming changes. In this case incoming changes will override local changes.
- Manual (do nothing). In this case no steps are applied to resolve the problem.
- Marks as merged. When we apply local changes conflict markers for resource will be deleted and this option is disabled. When we apply incoming changes user can select whether to remove the conflict markers or not. This is done because resource may have other conflicts, e.g. properties conflicts etc. or user may need to perform other additional steps to resolve the conflict.
https://tortoisesvn.net/docs/release/TortoiseSVN_ja/tsvn-dug-conflicts.html
⇧ 説明を見た感じ、
- Apply local changes.
→ローカルの変更を採用 - Apply incoming changes.
→リモートの変更を採用
のどちらかを選ぶしか無さそうなのよね...
う~む、結局、バージョン管理外のファイルで競合が起きた場合のケースの正しい対応方法が分からん...
そして、
We will maintain Subversion support until January 8, 2024 on GitHub.com. After that date, it will be turned off and removed. Late in 2023, we’ll run a few hours-long and then day-long brownouts to help flush out any remaining use of the feature. The next version of GitHub Enterprise Server to ship after January 8, 2024, will also remove Subversion support.
https://github.blog/2023-01-20-sunsetting-subversion-support/
⇧ GitHubでは、Subversionのサポートの期限が2024年1月8日までとする声明が出てるようです。
Excelで作成された設計書などのバージョン管理ってGitでもできるんかね?
⇧ 公式ではサポートを公言してないっぽいので、独自に頑張るしかないっぽいのかしらね?
毎度モヤモヤ感が半端ない...
今回はこのへんで。