0

コースの一部として、いくつかの JSP/サーブレット コードを使用して単純な Web サービス プロジェクトを開始しようとしています。私たちは 4 人のチームで、うち 3 人はバージョン管理ソフトウェアを使用したことがありません。プロジェクトを Google Code でホストする予定です。これにより、時間に余裕を持って作業しながら、コードやバージョン管理などにアクセスできるようになります。SVN と Mecurial/GIT のどちらかを選択する必要があります。コードがかなり小さいことを考えると、SVN の代わりに DVCS を選択する特定の利点はありますか? Git/Mercurial に比べて SVN の学習は簡単だと思います。

PS: GUI クライアントは生活を楽にします。Git に適したものはありますか?

PPS: DVCS を学びたいので、DVCS に少し傾いています。学年は学ぶのに最適な時期です!

4

3 に答える 3

3

以前の回答とは対照的に、少なくとも今は Git を使用しないことを強くお勧めします。私は怠惰すぎて、自分のポイントを繰り返して、Git 狂信者と再びフレームワークを開始することはできません。しかし、チームの大部分の最初の SCM (および DVCS) として Git を選択することは、最悪の選択です。

Git/Mercurial に比べて SVN の学習は簡単だと思います

SVN と Hg の学習曲線はほぼ等しいと考えられます (いくつかの異なる頭痛は両側にあります)

コードがかなり小さいことを考えると、SVN の代わりに DVCS を選択する特定の利点はありますか?

何度も議論したことを繰り返さずに(リンクについては@ AD7sixに感謝します)-はい、いくつかあります...

  1. Subversion では、あなた (チーム) は、少なくとも 1 つの中央サーバーとそれにアクセスする必要があります。Mercurial ではhg serve、誰もがオンデマンドで p2p 通信を利用できます
  2. 初心者は SVN-rake を踏むことができます (多くの「Merge Hell」、fe) かなり簡単です: コードベースのサイズに部分的にのみ依存し、ほとんどがワークフローであり、スタイルに依存します: インプロセス同期のない長時間のブランチ、ツリー- コードの重いリファクタリング (初期段階での通常のケース) で競合し、分岐と管理不能な巨大なコミットを無視します (「トランクは常に機能する必要がある」というマントラ)。

別の POV から:

  1. CVCS(クラスとして、SVNは「クラス最高」として)は存続し、企業で長年使用されます(IMNSHO)-そしてSubversionを適切に使用する能力は常にプラスになります

  2. Subversionは、設計と計画における規律と正確さを自動的に教えますが、DVCS では要件ではなく合意のみです (ある程度は確かです)。

未定

于 2012-10-24T03:31:57.507 に答える
2

2 つの最大の選択肢は、git と Subversion の間です。Git は分散バージョン管理システムであり、Subversion は集中型です。私が多くの人に言っているように、彼らは違います。状況に応じて、それぞれに独自の利点があります。

Subversion ははるかに使いやすく、ドキュメントも充実しています。Git の複雑さは分散システムであるため、ローカル リポジトリとリモート リポジトリが存在するため、更新を送信する 2 つのリポジトリが存在することになります。これは、多くの人、特にバージョン管理システムに慣れていない人にとって非常に混乱を招く可能性があります。

Subversion をダウンロードし、 Subversion のオンライン マニュアルを読んで、いろいろ試してみることをお勧めします。これは、Subversion を使用するということではありません。バージョン管理システムの使い方を理解してもらうためのものです。

さて、そこにいる Git ファンを満足させるために: Git には Subversion よりも大きな利点が 1 つあります。それは、分散されていることです。Subversion では、集中リポジトリが必要です。つまり、Apache サーバーをセットアップするか、少なくともsvnserve誰でもアクセスできるマシンで Subversion サーバー プロセスを実行する必要があります。あなたはそれらの1つを横たわっていますか?ほとんどの小さなチームはそうではありません。

あなたのような状況で Git が優れているのは、Git を実行する中央サーバーが必要ないことです。誰もがリポジトリ全体のコピーを持っているため、変更を中央サーバーにチェックインすることなく、チームのメンバー間で更新を直接渡すことができます。電子メールで Git パッチを相互に送信できます。または、 Dropboxで一元化された Git リポジトリを使用して、そこからローカル コピーをプッシュおよびプルすることもできます。(そのリポジトリを直接使用しないでください!)。主な問題は、チームの全員が他の全員と同じ最新情報を確実に入手できるようにすることです。注意しないと、ここで Git が故障する可能性があります。

さて、たまたま集中型サーバーを持っていて、代わりに Subversion を使用している場合、Subversion リポジトリ サーバーを設定するのは非常に簡単です。Subversion にはsvnserve非常に軽量なサーバーが付属しており、Windows サービスとしてセットアップできます。サーバーとして Apache httpd を好む場合は、さまざまなソースから無料で入手できる Subversion サーバー パッケージを入手できます。ここにいくつかあります:

  • VisualSVN : Windows のみ。LDAP、Active Directory、または SSL を使用するような凝ったことをしたい場合を除き、無料です。1
  • UberSVN : Windows、Mac、または Linux で動作します。VisualSVN と同じ制限。1
  • CollabNet Subversion Edge : 完全なオープン ソース ソリューション。セットアップは他の 2 つほど簡単ではありませんが、それほど難しくはありません。これにより、ユーザー アカウントに LDAP/Active Directory を使用する準備が整い、SSL 証明書のセットアップが非常に簡単になります。

1これらのパッケージは、完全な Apache httpd および Subversion パッケージであり、すべてが 1 つの簡単なインストールに結合されています。GUI フロント エンドを使用しない場合は、LDAP/Active Directory または SSL を自分でセットアップできます。プロ版の料金を支払わずにフロントエンドを使用してこれを行うことはできません. ただし、ライセンス契約がそれについて何を言っているのか正確にはわかりません。

于 2012-10-24T01:44:09.563 に答える
0

バージョン管理ソフトウェアを使用したことがない場合は、Mercurial から始めることをお勧めします。Git は Mercurial の兄であり、少し威圧的です。

バージョン管理の使用には、次の 2 つの主要な規則があります。

  1. 早めにチェックインし、頻繁にチェックインしてください。
  2. 壊れたコードをコミットしないでください。

配布されたバージョン管理がなければ、これらのルールは互いに激しく競合します。

Subversion でこれを機能させるには、非常に成熟した訓練されたチームが必要です。

Mercurial または Git を使用すると、開発者は 1 時間に何度もプライベート クローンにコミットします。彼らが満足し、コードが安定したら、中央リポジトリから最新の変更を取り込みます。そのマージが成功すると、両方のストリームの履歴を保持しながら、バージョンが新しい「トランク」、「マスター」、または「デフォルト」になります。

完全なストーリーについては、Joel Spolsky のHgInitをチェックしてください。Bitbucketもチェックしてください。最大 5 人のチームに無料の Git または Mercurial ホスティングを提供しています。もちろん、githubもあります。

于 2012-10-24T19:38:29.093 に答える