通常はトランクでコードに取り組んでいますが、最近の変更により、ワークスペースをブランチに切り替える必要がありました。
プロジェクトを実際にトランクに切り替えることなく、ブランチで作業中にトランクの変更をコミットすることは可能ですか?
基本的に、トランクとブランチの両方で、何度も何度も切り替えずに変更をコミットしたい
短い答え: いいえ
これが、神が最初に創造svn switch
した理由です。これにより、作業内容を失うことなく、作業ディレクトリの基になるブランチを変更できます。
次のように考えてみてください: 開発者は、 「これはテストする必要はない。マイナーな変更だから」と自分に言い聞かせて、何かを壊したことが何回ありますか?
Subversion でやりたいことができるようになったとしても、それは悪い考えです。基本的に、コードベースに変更を加えることになり、そもそもそれらが機能することを確認する実際の方法はありません。これが、変更を行う前に Subversion が作業ディレクトリを必要とする理由です*。変更をどのようにテストしますか?
作業を失いたくないために使用したくない場合svn switch
は、次のようにすることができます。
svn switch
してそのトランクを作成します。svn co
またはsvn switch
を実行して、トランクの作業コピーを取得します。次にsvn merge -r
、変更をトランクにマージするために使用します。もちろん、コミットする前に変更をテストしてください。* Subversion では、mkdir
、cp
、mv
、およびrm
を URL で直接操作できますが、これは主に、作業ディレクトリを作成せずにブランチを操作できるようにするためです。
別のフォルダにあるトランクを確認してください。
トランクに変更を加えてチェックインします。次に、それらをブランチにマージし、マージをチェックインします。
WC URLの外部のパスにコミットすることはできません(を参照svn info WCROOT
)
上記のルールは、WCルートがブランチとトランクの共通の親であるレベルにある場合、両方の場所に同時にコミットできることを意味します(ブランチとトランクはWC内のサブディレクトリになります)。共通の親はrepository-rootです。リポジトリ全体をチェックアウトしないために、commit/updateの--depthおよび--setdepthオプションで遊ぶことができます。