2016-08-23 3 views
0

私はSVNで新しく、私は混乱しています!SVNのマージと更新はどのように機能しますか?

は私が/mybranch/trunkからチェックアウトした考えると、私はディレクトリにこのファイルを持っている:

index.php 
style.css 

index.phpの内容は次のとおりです。

<?php 

function say() 
{ 
    echo "Hello" ; 
} 

$name = "Tom" ; 

?> 

私は私がする私の職場で働いていますがこのファイルを次のように編集します。

#worikin place Edit 1 
<?php 

function say($name) 
{ 
    echo "Hello" . $name ; 
} 

$name = "jerry" ; 

say($name) 

?> 

、#worikin placeとそのok!

が、他の誰かがindex.phpを編集し、私はこのように編集している間、ことをコミットしたか:

#another user commited index.php on `/mybranch/trunk` 
<?php 

function say($name , $lname) 
{ 
    echo "Hello" . $name .$lname ; 
} 

$name = "tom" ; 
$lname = "max" ; 

say($name) 

?> 

私は何が起こるか、それをコミットしたい場合は、今私は、私の作業場所に#worikin place Edit 1がありますか?

index.phpを更新したい場合はどうしますか?更新後のindex.phpの内容は何ですか?作業場所ファイルとブランチファイルの違いをマージするSVNの戦略は何ですか?

+0

これは宿題のようなものです。 また、誰か他の編集者のインスタンスで$ nameの大文字/小文字を変更することを意味しましたか? "tom" == "Tom" – Intern87

+0

@ Intern87これは宿題に関する質問ではありません。私は、作業場所ファイルとブランチファイルの違いをマージするSVNの戦略は何ですか? –

+0

両方のブランチが同じ作業場所ファイルから来ていて、誰かが(同じコード行で)編集していて、あなたの前にコミットしていた場合、マージ競合が発生し、SVNが自動マージされません。 更新後のSVNコンテンツは、マージの競合を解決するまで、変更をコミットする最初の人になります。 – Intern87

答えて

1

コミット時に、サーバーは、影響を受けたファイルのいずれかがそれ以降のリビジョンで変更されたかどうかを判断します。そうでない場合、コミットは正常に完了します。それ以外の場合は、中止され、作業コピーを更新するように求められます。

作業コピーを更新すると、クライアントは着信ファイルがローカルで変更されているかどうかを判断します。そうでない場合、更新は正常に完了します。それ以外の場合は、受信した変更をローカルファイルにマージしようとします。

受信した変更をマージしようとすると、クライアントはそのような変更をきれいに挿入できるかどうかを判断します。その場合、マージは正常に完了します。そうしないと、手動で修正する必要がある競合が発生します。

関連する問題