マニュアル/Subversion/ブランチ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* Subversionにおけるブランチ [#g6c33a4e]
#contents
** Subversionにおけるブランチの概念 [#z99c7e96]
Subversionにおけるブランチの概念は、単なるフォルダやファ...
例えば、trunkフォルダで作業中に、試験的にXという機能を実...
もしtrunkフォルダ上のファイルにXに関する変更を加えると、X...
そこで、branch-xという名前でtrunkフォルダのコピーをつくり...
trunkはtrunkで改良などが続き、branch-xではXの機能実装が行...
Xの機能はいらないとわかったら、branch-xフォルダを削除すれ...
もしXの機能が必要なのでtrunkに組み込む、ということになれ...
これで、面倒な依存影響に煩わされることなく、開発を行うこ...
** 前提 [#hba18d51]
まず、trunkのみで、リビジョン120まで開発したとします。
そこで、機能Xの実装を試みるために、trunkをbranch-xという...
そして、trunkとbranch-xの両方の更新が行われ、レポジトリの...
ちなみに、レポジトリ構造としては、
http://server/svn/project1/ - レポジトリのルートフォルダ
http://server/svn/project1/trunk - 主開発フォルダ
http://server/svn/project1/tags - タグ用のフォルダ
http://server/svn/project1/branches - ブランチ用フォルダ
http://server/svn/project1/branches/branch-x - Xの機能を...
リビジョ...
という感じになります。
** 操作の流れ [#n779afa9]
最初に、操作の流れだけ書いておきます。まとめや結論を先に...
+ ブランチを作る(trunkを、branch-xとしてコピーする)
+ trunkとbranch-xでそれぞれ開発を行い、必要に応じてtrunk...
+ trunkにXの機能追加を適用するために、branch-xの修正をtru...
2.のマージ作業をこまめにやっておくと、3.のマージ作業が楽...
** ブランチの作り方 [#f2c7d4f1]
単純にコピーを行うだけです。基本はフォルダ単位で行います。
コマンドラインなら、svn copyコマンドを使って、trunkフォル...
TortoiseSVNであれば、http://tortoisesvn.bluegate.org/Help...
Subclipseなら、プロジェクトリストのフォルダを右クリックし...
ブランチは、レポジトリ内のコピーなので、作った直後は(ロ...
なお、レポジトリ内では、リンクによりコピーが行われるので...
** ブランチの使い方 [#o196fd84]
ブランチの使い方は二通りあります。
一つは、レポジトリ切り替えを行って、trunkの編集をやめてbr...
もう一つは、branch-xを新しくチェックアウトする方法です。
ここでは、後者をお奨めするので、その方法についてです。
trunkをチェックアウトした時と同じように、branch-xを指定し...
操作はそれだけです。ローカル作業領域には、trunkとbranch-x...
これで、同時に、もともとのtrunkの開発も行えて、branch-xで...
** trunkの修正をbranch-xに反映させる [#e5b66d31]
trunkで重要なバグ修正等があると、branch-xも更新する必要が...
そこで、trunkの修正をbranch-xに反映させる必要が出てきます。
マージ作業の原理は、次のようになります。
*** マージの原理 [#y8836596]
まず、trunkのリビジョンを二つ指定します。その二つのリビジ...
リビジョンを含めて説明すると、リビジョン120からリビジョン...
自動マージは行単位で行われます。いわゆるdiffと同じ原理で...
自動マージできる例としては、次のようなものがあります。
trunk@120
if(a > b) {
x++;
}
trunk@150
if(a > b) {
y--;
x++;
}
branch-x@150
if(a > b) {
x++;
z = 0;
}
branch-x@マージ結果
if(a > b) { //この行は両方一致
y--; //trunk@150からもってきて追加した
x++; //この行は両方一致
z = 0; //branch-xからもってきて追加した
} //この行は両方一致
自動マージできない例としては、次のようなものがあります。
trunk@120
if(a > b) {
x++;
}
trunk@150
if((a > b) && (c < 0)) {
y--;
x++;
}
branch-x@150
if((a > b) && (c < b)) {
x++;
z = 0;
}
branch-x@マージ結果
if((a > b) && (c < 0) && (c < b)) { //手作業でマージする...
y--; //trunk@150からもってきて追加した
x++; //この行は両方一致
z = 0; //branch-xからもってきて追加した
} //この行は両方一致
このように、trunkかbranch-xのどっちかの行を組み合わせてマ...
*** 操作方法 [#s2184d89]
コマンドラインの場合は、svn mergeコマンドを使ってください。
svn merge -r [旧リビジョン]:[新リビジョン] [trunk(URL)] ...
です。変更元のtrunkの指定はレポジトリのURLであるのに対し...
TortoisSVNなら、branch-xフォルダに対して、マージを実行し...
Subclipseなら、プロジェクトリストのbranch-xフォルダを右ク...
この作業により、ローカルにあるbranch-xの作業領域が更新さ...
** branch-xの機能をtrunkに反映させる [#oe371026]
基本は前述のマージ手順と同じで、対象が逆転しただけです。...
注意すべき点だけを書いておきます。
- マージの適用先は、ローカルにあるtrunk
- マージの適用元は、レポジトリにあるbranch-x
- マージの開始リビジョンは、branch-xをコピーした時(ブラ...
- マージの終了リビジョンは、branch-xを最後に更新したりビ...
ということです。
** 終わりに [#n9a9f5b5]
trunkとbranch-xをそれぞれチェックアウトしたのは、両方の作...
trunkが変更されたことがわかったら、コミットコメントを見て...
こまめにマージしてtrunkの変更を取り込んでおけば、最後にtr...
終了行:
* Subversionにおけるブランチ [#g6c33a4e]
#contents
** Subversionにおけるブランチの概念 [#z99c7e96]
Subversionにおけるブランチの概念は、単なるフォルダやファ...
例えば、trunkフォルダで作業中に、試験的にXという機能を実...
もしtrunkフォルダ上のファイルにXに関する変更を加えると、X...
そこで、branch-xという名前でtrunkフォルダのコピーをつくり...
trunkはtrunkで改良などが続き、branch-xではXの機能実装が行...
Xの機能はいらないとわかったら、branch-xフォルダを削除すれ...
もしXの機能が必要なのでtrunkに組み込む、ということになれ...
これで、面倒な依存影響に煩わされることなく、開発を行うこ...
** 前提 [#hba18d51]
まず、trunkのみで、リビジョン120まで開発したとします。
そこで、機能Xの実装を試みるために、trunkをbranch-xという...
そして、trunkとbranch-xの両方の更新が行われ、レポジトリの...
ちなみに、レポジトリ構造としては、
http://server/svn/project1/ - レポジトリのルートフォルダ
http://server/svn/project1/trunk - 主開発フォルダ
http://server/svn/project1/tags - タグ用のフォルダ
http://server/svn/project1/branches - ブランチ用フォルダ
http://server/svn/project1/branches/branch-x - Xの機能を...
リビジョ...
という感じになります。
** 操作の流れ [#n779afa9]
最初に、操作の流れだけ書いておきます。まとめや結論を先に...
+ ブランチを作る(trunkを、branch-xとしてコピーする)
+ trunkとbranch-xでそれぞれ開発を行い、必要に応じてtrunk...
+ trunkにXの機能追加を適用するために、branch-xの修正をtru...
2.のマージ作業をこまめにやっておくと、3.のマージ作業が楽...
** ブランチの作り方 [#f2c7d4f1]
単純にコピーを行うだけです。基本はフォルダ単位で行います。
コマンドラインなら、svn copyコマンドを使って、trunkフォル...
TortoiseSVNであれば、http://tortoisesvn.bluegate.org/Help...
Subclipseなら、プロジェクトリストのフォルダを右クリックし...
ブランチは、レポジトリ内のコピーなので、作った直後は(ロ...
なお、レポジトリ内では、リンクによりコピーが行われるので...
** ブランチの使い方 [#o196fd84]
ブランチの使い方は二通りあります。
一つは、レポジトリ切り替えを行って、trunkの編集をやめてbr...
もう一つは、branch-xを新しくチェックアウトする方法です。
ここでは、後者をお奨めするので、その方法についてです。
trunkをチェックアウトした時と同じように、branch-xを指定し...
操作はそれだけです。ローカル作業領域には、trunkとbranch-x...
これで、同時に、もともとのtrunkの開発も行えて、branch-xで...
** trunkの修正をbranch-xに反映させる [#e5b66d31]
trunkで重要なバグ修正等があると、branch-xも更新する必要が...
そこで、trunkの修正をbranch-xに反映させる必要が出てきます。
マージ作業の原理は、次のようになります。
*** マージの原理 [#y8836596]
まず、trunkのリビジョンを二つ指定します。その二つのリビジ...
リビジョンを含めて説明すると、リビジョン120からリビジョン...
自動マージは行単位で行われます。いわゆるdiffと同じ原理で...
自動マージできる例としては、次のようなものがあります。
trunk@120
if(a > b) {
x++;
}
trunk@150
if(a > b) {
y--;
x++;
}
branch-x@150
if(a > b) {
x++;
z = 0;
}
branch-x@マージ結果
if(a > b) { //この行は両方一致
y--; //trunk@150からもってきて追加した
x++; //この行は両方一致
z = 0; //branch-xからもってきて追加した
} //この行は両方一致
自動マージできない例としては、次のようなものがあります。
trunk@120
if(a > b) {
x++;
}
trunk@150
if((a > b) && (c < 0)) {
y--;
x++;
}
branch-x@150
if((a > b) && (c < b)) {
x++;
z = 0;
}
branch-x@マージ結果
if((a > b) && (c < 0) && (c < b)) { //手作業でマージする...
y--; //trunk@150からもってきて追加した
x++; //この行は両方一致
z = 0; //branch-xからもってきて追加した
} //この行は両方一致
このように、trunkかbranch-xのどっちかの行を組み合わせてマ...
*** 操作方法 [#s2184d89]
コマンドラインの場合は、svn mergeコマンドを使ってください。
svn merge -r [旧リビジョン]:[新リビジョン] [trunk(URL)] ...
です。変更元のtrunkの指定はレポジトリのURLであるのに対し...
TortoisSVNなら、branch-xフォルダに対して、マージを実行し...
Subclipseなら、プロジェクトリストのbranch-xフォルダを右ク...
この作業により、ローカルにあるbranch-xの作業領域が更新さ...
** branch-xの機能をtrunkに反映させる [#oe371026]
基本は前述のマージ手順と同じで、対象が逆転しただけです。...
注意すべき点だけを書いておきます。
- マージの適用先は、ローカルにあるtrunk
- マージの適用元は、レポジトリにあるbranch-x
- マージの開始リビジョンは、branch-xをコピーした時(ブラ...
- マージの終了リビジョンは、branch-xを最後に更新したりビ...
ということです。
** 終わりに [#n9a9f5b5]
trunkとbranch-xをそれぞれチェックアウトしたのは、両方の作...
trunkが変更されたことがわかったら、コミットコメントを見て...
こまめにマージしてtrunkの変更を取り込んでおけば、最後にtr...
ページ名: