プログラミング学生にとって、どのDVCS(gitまたはhg)が簡単ですか?[閉まっている]


25

ちょっとした文脈:私は大学3年生です。学生は4人のチームに分かれています。ほとんどの人はWindowsで作業しています(Linuxを使用している私のような少数の人を除く)。学校のカリキュラムの一環として、まもなく本物のクライアント向けのプロジェクトに取り掛かりますが、私と別のチームは、コードを相互に共有するのにどの方法が最適か疑問に思っています。

私は3年間パートタイムで働いており、さまざまなプロジェクトでgitとmercurialの両方を使用した経験が豊富なので、どちらのシステムを使用しても問題はありません。しかし、私のチームメートは誰もバージョン管理システムを使用したことがありません。SVNを使用しようとしたが、大きな問題があり、他の何かを試してみたいと思う別のチームもいるので、彼らは私の意見を求めました。

私の考え:Mercurial + TortoiseHgはWindowsの下でより良く統合されていると聞いたことがありますが、匿名の頭の概念が説明しても混乱させるのではないかと思っています。一方で、初心者にとってはgitブランチの方が理解しやすい(各プログラマーの作業が明確に分離されている)が、Windowsではうまく機能しないことがわかりました。


2
gitはデフォルトで多くのパワーが有効になっていますが、私が話したことがある人は、水銀はもっと簡単に学べると言い、両方を使った私の経験に基づいて同意する傾向があります。はい、水銀ツールは、同等のgitツールよりもWindowsに簡単にインストールできます。そうは言っても、最初の1週間(またはそれ以上)に人々をガイドし、チュートリアルでそれらを指すことを期待してください。
wkl

1
最初からDVCSを使用することは、並行して動作している複数の貢献者からの貢献のマージを管理する最も簡単な方法である可能性があります。匿名の頭がわかりにくい場合は、それらを使用しないでください(mercurialは名前付きブランチをサポートしています)。
スティーブンC.スチール

2
もう一度このブログ投稿にリンクしますか?GitはHarrier Jump Jetです。
sbi

1
「学ぶのが難しすぎる」全体がなぜ重要なのか理解できませんでした。さて、コミットや分岐の方法を学ぶには20分かかります。10...
代替

1
それらの1つがhginit.comを通過し、それらの反応に基づいてアクションを実行するのを見てください。
チェルマーツ

回答:


49

間違いなくマーキュリアル。

もちろん、これは主観的なものであり、ある人から別の人への価値はありますが、一般的な意見は、Mercurialは、VCSが初めての人や古い世代のVCSから来た人にとっては特に簡単だということです。

手のポイント:

  1. MercurialはWindowsを念頭において開発されました。Gitが移植されました。誰が私に何を言おうとしても、Gitは依然としてWindowsの二流の市民です。過去数年間で状況は順調に改善されましたが、Windowsで* nixボックスのように何かが機能する、または機能しない理由についてはまだ多くの論争があります。TortoiseHgは非常にうまく機能し、Visual Studioの実装はワークフローを損なうことなくさらに使いやすくなります。

  2. 誰かが「Gitはあなたの後の方がより強力です...」という議論を始めた場合、彼はほとんどすべてを言っています。ユーザーの95%にとって、Mercurialはより直感的です。インデックスの欠如から始まり、より直感的なオプション(オプションスイッチが一貫している)、SHA1ハッシュの代わりにコミットのローカル番号(SHA1ハッシュがユーザーフレンドリーだと思ったことはありますか?!)

  3. Mercurialのブランチは、Gitのブランチよりも強力です。いくつかの違いを説明する投稿。以前のリビジョンに戻ることは、「古いリビジョンを更新する」のと同じくらい簡単です。そこから始まります。新しいコミットを行うだけです。名前付きブランチは、使用したい場合にも利用できます。

今、私はこれらすべてが詳細であり、それらはすべて学ぶことができることを知っていますが、事は...これらの事が積み重なることです。そして、最終的には、ある人は他の人よりもシンプルで直感的に思えます。また、バージョン管理システムは、学習に時間を費やすものであってはなりません。プログラミングを学び、それからプログラミングをするためです。VCSはツールです。

注意してください。私はGitとMercurialを毎日使用しています。どちらを使用しても問題ありません。しかし、誰かが私に推薦を求めるとき、私はいつもMercurialを推薦します。覚えておいて、それが最初に私の手に渡ったとき、それは非常に直感的だと感じました。私の経験では、MercurialはGitよりも少ないWTF /分を生成します。


4
+「VCSはツールです」。私は「小さなもの」を要因として考えていませんでしたが、あちこちで小さな問題を追加すると、それが本当の迷惑になる可能性があるのは事実です。
グレゴリーエリックサンダーソン

8
「バージョン管理システムは、学習に時間を費やすものであってはなりません。」これはがらくたの負荷です。ツールの学習には常に時間を費やす必要があります。コンパイラーの学習に時間を費やします。ただし、VCSは、コンパイラと同じくらい重要なプログラミングツールです。
JesperE

9
+1。特に、この状況では「Windowsの2番目のクラスの市民」引数が絶対に重要です。
-tdammers

「WTF(s)/ minute」の場合は+1(osnews.com/story/19266/WTFs_m)。これらの子供たちはスキルを学ばなければなりません:
ロスパターソン

1
@Markは用語の違いの結果にすぎません... Gitのブランチは実際には単なる名前です。
代替

10

TortoiseHg UIはWindowsで素晴らしい体験であることがわかりました。過去にGitを試したとき、代わりにコマンドラインに移動しました。平均的なユーザーにとって、優れたUIはコマンドラインよりもずっと親しみやすいものです。したがって、Mercurialを使用することをお勧めします。(ワークベンチウィンドウに素敵な分岐グラフも含まれています。基本的な分岐の問題をすべて解決するはずです。)

UIの観点から物事を理解すると、コマンドラインに移動してスクリプトを作成したり、手動操作を行ったりすることがありますが、そうする必要はありません。


自分で「コンソール中毒者」であるため、Tortoise {Svn、Git、Hg}アプリを使用したことがないので、TortoiseHgに分岐グラフがあることを知りませんでした。私はそれをチェックアウトする必要があります
グレゴリーエリックサンダーソン

4

3番目のオプションに興味がある場合は、化石をお勧めします。小規模なプロジェクトでは、コードを共有するために一時的なWebサーバーをスローする機能が優れていると思います。Fossilは単なる実行可能ファイルなので、ソースとソースをサムドライブに入れて、どの大学のコンピューターからでも使用できます。

fossil ui同僚の生徒をあなたと同期させるために、どこにいても一時的なWebサーバーを起動するために使用します。また、チケットシステム、wiki、ブランチの変更およびコミットのタグ付けのための使いやすいWebインターフェイスも提供します。

クイックスタートガイドを読んでください。最後に、Web UIよりも使いやすいユーザーインターフェイスを提供するwinFossilというプロジェクトがあります。


化石については良いことを聞いたことがありますが、残念ながら新しいDVCSに慣れる時間はあまりありません。最も一般的な落とし穴を回避する方法をすでに知っているので、私は(可能であれば)慣れているものを使用することを好みます。しかし、提案のおかげで、時間ができたら間違いなく調べます。
グレゴリーエリックサンダーソン

+1; 化石は、それがあること(DVSC +ウィキ+チケット+ Webサーバ)自己完結型の少し知られているが、それは仕事にとても簡単だし、そうされている tracのかさえgithubの全体に真の選択肢。
ハビエル

しかし、化石は学生の履歴書ではgitやhgほど見栄えがよくありません。
イアン

Mercurialにはhgサービス機能も組み込まれています。もちろん、バグトラッカーとwikiがありません。しかし、それからbitbucket.comもあります
ヨハネスルドルフ

3

チームがバージョン管理の初心者であり、多くがWindowsを使用していることを考えると、gitよりもmercurialをお勧めします。

gitとmercurialで使用されるバージョン管理の概念モデルは非常に似ているため、一方をマスターしたら、もう一方を簡単に選択できます(同様の理由で、リポジトリを一方から他方に簡単に変換できます) 。これは、後で気が変わっても大したことではないことを意味します。

私の意見では、新しいユーザーにとって水銀は簡単に習得できます。それは簡単なことを簡単にし、危険なものを難しくします。Gitを使用すると、危険な操作が簡単になります(簡単に実行できますが、必ずしも正しく簡単に実行できるとは限りません)

WinodowsのTortoiseHgインターフェイスも非常に優れており、mercurialの使用を支持するもう1つの議論です。


2

私の個人的な好みはgitです。

ただし、一部の人々はウィンドウを使用しており、優れたhginitチュートリアルが存在するため、それらに水銀を教えることをお勧めします。


hginitについて言及する場合は+1。ただし、Pro Gitもかなり良いです。
タマスゼレイ

@TamásSzelei、ありがとう、以前にPro Gitを見たことがなかった。
dan_waterworth

0

多くの人が示唆しているように、TortoiseHgを介したMercurialの参入障壁は非常に低くなっています。

Windowsの場合は、2つのインストーラーではなく、1つのインストーラー(そして、知りたくないこともあります)であり、THgユーザーインターフェイスはTortoiseGit + Msysgitよりも洗練されています。

匿名の頭

匿名の頭で混乱していると思われる場合は、その使用を奨励しないでください。ほとんどのhg本は、バランスのとれたアプローチを取り、トポロジカルブランチと名前付きブランチの両方を教え、読者がどちらを使用するのが最も適切かを判断します。

名前付きブランチ

私は一つのこと、本当ににミスがgitあるhgという名前の枝それは一つの選択ですので、。git作業中のブランチは問題ありませんが、その作業を別のブランチにマージすると、それらの変更のコンテキストの多くが失われます。

ではhg、あなたと呼ばれるブランチを作成することができJira#1234、常にそれに関連したリビジョンのすべて見つけることができるように修正を。でgit、ブランチをマージしてrefを削除したら、リビジョンツリーのトポロジから修正の一部であるリビジョンを推測する必要があります。refを削除しなくても、そのブランチの最後のコミットのみを知っており、どの祖先がコミットのチェーンの一部であったかはわかりません。

しおり

または、名前付きブランチを使用したくないgitが、匿名ブランチでスタイルワークフローが必要な場合は、代わりにブックマークを使用できます

これは両方の世界で最高の可能性があります-彼らはgitワークフローを学ぶことができますが、より単純なhgコマンドを使用するようになります。

インデックス/キャッシュ/ステージング領域

個人的には、学生はの匿名の頭gitよりものインデックス/キャッシュ/ステージング領域で混乱する可能性がはるかに高いと思いますhghgこの高度な機能をコマンドラインでオプションにすることgitは、常にそれを使用する/常に使用する必要があると仮定する方法よりもはるかに好まれます。

また、ステージング領域は、テストされていない、またはコンパイルされていないコミットを奨励すると思います。私が働いた場所の多くはルールをコンパイルしないとコミットしないので、今はしたくない変更を保留 / 隠し、ユニットテストを再実行し、コンパイルを知っています。

後でhg bisectまたはgit bisectを使用してバグを追跡するようになったとき、コンパイルしたリビジョンだけでなく、すべてのリビジョンをテストできることに感謝します。


完了したら、gitブランチを削除する必要はありません。カスタムのみです。また、インデックスの使用を誤って解釈する場合は-1-不正なコミットのステージングには使用せず、より大きな一連のコミットの部分的なステップのステージングに使用します。通常、これは履歴を消去するリベース中に発生します。
代替

@mathepic-ブランチ名を削除せずに、ローカルの「修正」ブランチをすべてリモートにプッシュすると、膨大な数のrefになります。 SVNで。ではhg、あなたが彼らのために見ればあなただけそれらを見るように、これらのブランチ名、常に位相幾何学的にローカルです。
マークブース

@mathepic--1に関しては、私が言っていることを誤解していると思います。なぜだれかが意図的に悪いコミットをするのか想像できませんが、gitでは偶然に簡単にコミットできます。そのファイルcが変更されたインターフェースをファイルに実装していることを忘れてi、誤ってコミットしiないc場合c、コンパイルをコミットする前に誰かが変更をプルすると失敗します。代わりにstash / compile / commitワークフローを使用する場合、独自のビルドが最初に破損するため、この間違いは発生しません。私は答えをより明確にしようとしましたが。
マークブース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.