2020.7.8こんにちは。情熱開発課の若尾です。プログラムやってます。パッション!現在私はSVNでソース管理をしているプロジェクトで仕事をしています。SVNはgitと比較すると、ブランチ(枝)が一つしかないので管理がシンプルでわかりやすいです。バージョンを分けて保持や検証をするのが困難です。これを少しでも解消するために、SVNのパッチ機能を使ってみたところ思った以上に利便性があったので、ブログに書いてみます。今回はSVNパッチの使い方と、プロジェクトの際に便利だったことを書きます。SVNパッチ(patch)の使い方Patchという言葉から察せられるように、このpatchを作る側と適応する側に分かれて使われます。作る際の注意点として、必ずソース管理の一番上(親)のフォルダで行ってください。Patchを適応する際に、どのフォルダからみて適応するのかというのもキーになるので作る際も予め一番上で作るといった決め事をしておくことを推奨します。選択する編集や追加したファイル、つまり変更履歴として残したいファイルを選択します。このファイル選択はcommitの選択画面と似ているため、わかりやすいです。任意のファイル名で保存します。これがpatchとなります。作成された.patchファイルを作成者から受け取ります。選択する受け取った.pacthファイルを選択します。変更差分の一覧が表示されます。同時にTortoiseMergeも起動します。items”は全てのファイルの差分を適応します。これで.patchに記載された変更、差分を適応することができます。注意点svnに登録されてないファイル(addコミット前のファイル)に関しては.patchで取り扱うことはできません。.patchファイルをテキストエディタで開くと新規作成されたファイルの存在を確認することができます。新規作成されたファイルも含む場合は、それらのファイルがどこに配置されるかを共有者に確認し、ファイルをコピーして配置してください。代理でコミットする際、双方が便利プロジェクトに新たにメンバーが参入する際に、svnのアカウントがまだ発行されていない状態が続いていました。新メンバーにスタンドアロンでソースを持ってもらい、その人のsvnが繋がるまでは代理で私が新メンバーの作業を代理でコミットするという場面がありました。この時2つの問題があります。1つは変更ファイルを漏れなく貰うということです。変更したファイルが多くなるほど、それらのファイルを受け取る際に漏れが生まれやすいです。patchを使うことで防ぐことができます。patch作成の際に変更ファイルの確認をして作成、その後渡す・受け取るファイルは.patchひとつだけなのでスムーズに受け渡しができ、漏れを防ぎます。svnの.patchファイルを渡すだけで済む。2つ目は、代理コミットをする側が変更したファイルが受け取ったファイル及びアプリケーションに影響を及ぼす可能性があるということです。その為、一度代理コミット者が変更ソースをどこかにバックアップしてrevertする...という方法を取りたいですが、バックアップを漏れなくかつどこかに置く必要がある手間があります。patchとして作成して、その後revertします。することで、代理コミット後に自身のsvnに作成しておいたpatchを適応することで作業状態を戻すことができます。この2つ目の対策に用いた、自分自身の変更ソースのバックアップというのが非常に便利でした。作業中に見つかったバグやエラーが、自身の作業によるものなのか、svnのソースから発生したものなのかを棲み分けて発見したいときに容易に行えるのが良かったです。上記と似ていますが自分の作業と他作業者の機能を結合して確認するのが容易になります。それぞれの変更が入ったうえで、コミットするかどうかを検討するというケースは、稀に存在するのでこういったケースを解決できるのはとても良かったです。パッチが便利SVNでのプロジェクトが進む場合、patchのような使える機能は駆使するべきだと感じました。株式会社ロジカルビートは一切の責任を負いません。understrap.com。