4

数週間前にGitでYouTubeプレゼンテーションTechTalk:Linus Torvaldsを見ましたが、1つの発言が頭に残っているようです。

このプレゼンテーション(約33分)で、Linusは、「一部の人々はSVNリポジトリのクローンを作成し、マージ(= SVNでの頭痛)を行ってから、結果をSVNにプッシュバックします」と述べています。

私が持っている考えは次のとおりです。これが可能であれば、GITの優れたマージ機能を移植してSVNの不可欠な部分にしないのはなぜですか?

これにより、SVNが大幅に強化され、あらゆる種類の問題追跡システムや継続的インテグレーションシステムに接続する企業リポジトリや関連スクリプトを移行する必要がなくなります。

私は何かを逃したに違いない。それは何ですか?

4

5 に答える 5

7

SVNとGITの間には、一方が集中化されていることともう一方が集中化されていないことを除けば、もう1つの大きな違いがあります。GITはコンテンツを追跡し、SVNはファイルを追跡します。

SVNでブランチをマージする場合、SVNはブランチで行った変更を計算し、それらをトランク(またはマージターゲットが何であれ)に適用します。これらの変更は、通常のコミットを介してリポジトリに転送され、ソース情報(ブランチの履歴)は忘れられます。後のSVNバージョン(> = 1.5)でマージ動作が改善され、SVNはブランチのどのリビジョンがマージされたか、どのリビジョンがマージされなかったかを記憶するようになりましたが、基本的な問題は依然として存在します。

OTOH GITは、コードの一部の行がブランチxyzからのものであり、ブランチのリビジョンa、b、およびcで変更されていることをログで喜んで通知します。これにより、ブランチの作成、作業、メインラインへの更新、さらに作業、メインラインへのマージ、ブランチのブランチなど、クレイジーなマージ作業を問題なく簡単に実行できます。

アップデート:

結論:SVNとGITは、SVNのマージがGITになることなくGITと同じくらいクールになる可能性がある変更を追跡する方法が異なります。

于 2009-07-22T15:42:36.317 に答える
2

GitについてのGoogleトーク(ところで、Git Wikiでトランスクリプトを読むことができます:LinusTalk200705Transcript)は、Subversion1.5より前に行われたことに注意してください。当時、Subversionは、インテリジェントなGitのようなマージ追跡情報に必要な情報を保存していませんでした(拡張機能、またはSubversionの上に(半)分散されたSCMであるSVKを使用した場合を除く)。svnmerge

于 2009-07-22T16:12:25.330 に答える
1

1.5以降のSubversionでのマージ機能の改善に気づいていますか?以前よりもはるかに豊かです。1.5に移行してから、マージに問題はありません。それ以降のバージョンのSubversionに欠けているGITの機能を確認したいと思います。

于 2009-07-22T14:50:13.750 に答える
0

GitとSVNは、同じ問題を解決する2つのまったく異なる方法です。一方は分散され、もう一方は集中化されるため、GITコードをSVNにプラグインするだけでは不十分です。これは、JQueryを従来のVB6アプリケーションと統合しようとするようなものです。

于 2009-07-22T14:52:19.283 に答える
0

2009年以来、svnマージを「修正」するためのイニシアチブが少なくとも1つあります。

2011年7月の「SubversionMergeを修正する時が来ました」を参照してください(ただし、ほとんどのコメントはGitを使用するように促しています;))また、マージの追跡方法の変更を含む
プロジェクトページ「SubversionNewMergeマージ修正」を参照してください。 ただし、このプロジェクトではまだリリースが行われていないようです。

于 2012-09-05T06:33:00.667 に答える