「Gitユーザー向けのSVN」リソースはどこにありますか?[閉まっている]


18

そこで私は、会社がSVNを使用する仕事に就きました(ただし、将来Gitに移行する予定です)。問題は、SVNがわからないことです。多数のGoogleクエリを試しましたが、見つけることができるのはSVN-> Gitチュートリアル、「SVNよりGitが優れている理由」ブログ、および(一部の)比較可能なコマンドを提供する特定の「チートシート」だけです...

SVNに関するO'Reillyの本を読む以外に、Gitユーザー向けのSVNへの簡単な(しかし、短すぎない)指示は何ですか?


3
要するに:a)インデックスがない、b)svn up = git pull、c)svn commit = git commit && git push d)ブランチはディレクトリによってエミュレートされます...
;

1
トピックでこれをどのように行うことができるかわからない
...-agent154

5
ありえない。P.SEの場合は、何もかもがオフトピックです。
JensG 14年

@ agent154は、クラウドソーシングの検索エンジンになることを求めません。あなたが抱えている問題を特定する-問題は「svnのどこにあるのか」ではなく、「何かをしようとしていますが、どうすればよいのかわかりません」。それがコマンド 'svn'に固有のものであり、それを記述する方法に取り組んでいる場合は、Stack Overflowで質問してください。それがsvnのワークフローと構成(分岐するタイミング、マージするタイミング、他の開発者との連携方法)に関係している場合は、ここで質問してください。

2
確認された問題は、SVNをGitユーザーとして理解するために、多少リモートですぐに利用できるリソースの不足だと思います。率直に言って、Google / DuckDuckGoの結果のいくつかのページに目を通した後、OPが言及したもの以外は何も見つけられなかったので、この非常に有用な議論を見つけるでしょう。
メタグラファー14年

回答:


8

正規のリファレンスはSubversion RedBookです。過去のスキルに関係なく、これを新鮮なものから読んでください。そうすれば、必要なすべての使用情報を入手できます。難しくも完全に異質でもない、ほとんどの人はSVNはgitよりも理解しやすいと言っているので、メインコマンドを少し読むだけで大丈夫です。基本的な使い方の章はあなたを取得し、問題なく実行されている必要があります。

2つの主な違いがあります。

  • commit =中央リポジトリにプッシュします。リベースもローカルコミットもプルもありません。
  • 分岐はディレクトリごとです。リポジトリ全体をディレクトリ構造と考えると、ブランチはコピーオンライトセマンティクスでシンボリックリンクを作成するようなものです。gitではレポジトリ全体をブランチし、それらを切り替えて、新しいブランチが作業コピーを「オーバーレイ」するのに対して、SVNではレポジトリの一部を交換できます。一般に、人々はトップレベルのフォルダー(通常はブランチと呼ばれます)で分岐するため、切り替えはgitの「オーバーレイ」スタイルの作業に非常に似ています。

分岐は簡単で、特にトップレベルのフォルダー(トランク、ブランチ、タグと呼ばれる)の「標準」トリオに固執する場合、マージはDVCSの謝罪者が望むほど悪くはありません。

SVNがgitを打ち負かすいくつかのビットがあり、スパースディレクトリが思い浮かびます-レポジトリの一部のみをチェックアウトします。さらに部品が必要な場合は、必要なものだけを更新します。巨大なリポジトリ(コア製品やプラグインの負荷など)がある場合、これは素晴らしいです。

gitほど良くないいくつかのビットがあり、恐ろしいツリーの競合が思い浮かびます-ディレクトリレベルで競合がある(つまり、誰かが編集したファイルを削除した)

Windowsを使用している場合は、TortoiseSVNを使用します。それは主に揺れます。


依存します。SVNとのマージは、誰かがファイルを移動し(SVN自体が管理するdelete + addの教育形式です)、他の誰かが変更した場合に悪くなります。それ以外は、いい答えです。
JensG 14年

1
私はツリーの競合の問題について言及しました...そのような状態は他のSCMの問題ですが、Gitはヒューリスティックを使用して移動したファイルが同じかどうかを検出すると理解していますが、変更が重要な場合は間違っている可能性があります(たとえば、2)に分割されるファイル。
gbjbaanb 14年

Gitは、ツリーの変更を検出するためのヒューリスティックを必要としませんgit mv。ユーザーがを使用してファイルを移動する必要があります。SVNを持っているsvn moveが、SVNでの分岐とマージ以来種類ハックのですが、私はそれが自動的にgitのようなツリーの競合を解決することができるとは思わない...ん
IDAN Arye

3
@IdanArye git mvはadd + removeとして実装されます。gitはヒューリスティックを使用して、コミット中に移動またはコピーが行われたかどうかを判断します(デフォルトは「ファイルの80%以上は同じですか?」)
Izkata

3

可能であればgit svnを使用してください。私はあなたの状況にあり、半年のフラストレーションの後、私はgit svnに乗り換えて以来、満足しています。

Git svnを使用すると、リポジトリをローカルで使用でき、SVNサーバーへのコミットはgit svn rebase、ローカルの変更をSubversionトランクgit svn dcommitにリベースし、リベースされたコミットをコミットします。

高度なSubversionの使用には最適ではないかもしれませんが、gitをローカルで使用しているため、すべて問題ありません。

git cloneを使用する場合、subversionルートフォルダーではなく、ターゲットディレクトリを直接クローンする必要があります(clone trunk)。これにより、gitの実行速度が大幅に向上します。そうしないと、作業コピーが巨大になる可能性があります。

免責事項:Subversionブランチなどを作成する状況がどうなっているかわかりません。一緒に作業したチームはブランチを使用していません(ローカルgitブランチのみ)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.