web-dev-qa-db-ja.com

おもちゃのプロジェクトをセットアップして使用するのに最も簡単なバージョン管理システムはどれですか。

私は、CS部門で3番目に必要な入門コースを教えています。私の宿題の1つは、生徒に以前の課題用に作成したコードを高速化するように依頼します。 10倍の高速化は日常的なことです。 100または1000の係数は前代未聞ではありません。 (1000倍のスピードアップのためには、malloc()で新人のミスをしている必要があります。)

プログラムは、小さな変更であるシーケンスによって改善されます。私は学生に、各変更とその結果の改善を記録して説明するように依頼します。

プログラムを改善している間、それを壊すことも可能です。バックアウトするのはいいことではないでしょうか?

私がこれで何をしているのかがわかります。私の生徒たちはバージョン管理から多大な恩恵を受けるでしょう。ただし、いくつかの注意事項があります。

  • 私たちのコンピューティング環境はロックダウンされています。中央リポジトリに依存するものはすべて疑わしいです。
  • 私たちの学生は信じられないほど過負荷です。クラスだけでなく、仕事、スポーツ、音楽など、あなたはそれに名前を付けます。彼らが新しいツールを使用するには、それが信じられないほど簡単で、明らかな利点がなければなりません。
  • ほとんどの生徒はペアで仕事をします。アカウント間でビットをやり取りすることには問題があります。この問題は、分散バージョン管理によっても解決できますか?
  • 複雑さは敵です。 CVSリポジトリーの設定が難しすぎることは知っています。年に1回しか行っていないので、私自身はまだ問題を抱えています。 SVNはさらに難しいと聞いています。

これが既存のシステムに関する私のコメントです。

  • 生徒たちは他の生徒と共有できるリポジトリを作成するのに必要な管理者権限を持っていないため、中央バージョン管理(CVSまたはSVN)は除外されていると思います。 (Unixファイルのアクセス許可で立ち往生しています。)また、CVSまたはSVNでのセットアップは非常に困難です。
  • darcsは簡単にセットアップできますが、どのように共有するかは明らかではありません。 darcs send(パッチを電子メールで送信する)は有望であるように見えますが、その設定方法は明確ではありません。
  • Gitの紹介ドキュメントは初心者向けではありません。 CVSセットアップと同様に、私自身も問題があります。

初心者の学生にどのソース管理を使用するかについての提案を募集しています。既存のシステムの上に薄いベニアを置き、既存のドキュメントを簡略化するためのリソースを見つけることができると思います。新しいドキュメントを作成するためのリソースがない可能性があります。

setupcommitrevert、および変更をパートナーと共有しますがマージまたは簡単にする必要はありません大規模に働くには?

重要な制約は、プログラミングペアが互いに作業を共有でき、相互にのみ共有できる必要があるということです、およびペアは毎週変更されます。私たちのインフラストラクチャは、netappファイラーを備えたLinux、Solaris、およびWindowsです。 ITスタッフが、学生のペアごとにUnixグループを作成したいとは思いません。私が見落とした簡単な解決策はありますか?

(受け入れられた回答に感謝します-これは Git Magic への優れた参照と役立つコメントのために他の人を打ち負かしています。)

68
Norman Ramsey

私はGitのようなものがそれに合うかもしれないと言います:

  • 分散システムであるため、中央リポジトリは必要ありません。リポジトリはソースディレクトリに存在します
  • メールで送信して適用できるパッチファイルを簡単に作成できます。
  • Gitは使いにくいように見えるかもしれませんが、ファイルのコミット、マージ、追加、削除の基本的な考え方はそれほど難しくありません。

このサイトをご覧ください Git Magic または、このヒントサイト GitReady

84
Abizern

次に、 Mercurial の選択

メリット

  • 優れたドキュメント。
  • ブランチを表示するグラフィカルビューコマンド。
  • クロスプラットフォーム。
  • すべてのプラットフォーム(TortoiseHG、またはthg)のGUIが付属しています。
  • プロジェクトを表示するための組み込みWebサーバー。
  • プロジェクトをサムドライブに保存できます。
    • ペアのメンバーの1人だけがノートパソコンを覚えていても、作業を節約できます。それが起こることは決してありません。

短所

  • Pythonが存在しない場合はインストールする必要があります。
    • 簡単ですが、これは別のステップです。
  • プッシュ/プルと更新/コミットの違いを理解する。
    • (これはすべての分散型VCSに共通です)。
  • 頭と先端の違い。
  • 一部のコマンドはすぐには利用できません。明示的に有効にする必要があります。
    • (これは、物事をシンプルに保つので、一般的にコミュニティによって有利であると考えられます。
48
themis

Subversionは、Windows、Linux、Mac OS Xに簡単にインストールできます。彼らがプログラミングしているプログラムはわかりませんが、Eclipseのサブクリッププラグインはインストールがかなり簡単で、リポジトリの複雑さの一部を隠しています。

そして、リポジトリの複雑さ?とにかく、各プロジェクト内にトランク、タグ、ブランチフォルダーがあるだけです。また、時間はあまりないかもしれませんが、CVで見栄えがするスキルなので、SVN(または同様のもの)を学ぶ時間を確保する必要があります。

16
JeeBee

Fossil -実行する依存関係のない単一の実行可能ファイルであり、すべてのトラフィックをHTTP経由で操作し、すべてのリポジトリデータを任意の名前の単一ファイルに保持し、バージョン管理を含めます。 wiki、バグ追跡、およびWebサーバーをそのまま使用できます。ああ、それは完全に配布されています。

14
squeeks

私は Mercurial (「hg」とも呼ばれます)をお勧めします。これは分散型のオープンソースVCSであり、中央リポジトリは必要ありません。毎日の使用は簡単です。公式サイトには十分なドキュメントがあります。たとえば、 QuickStart を確認してください。

私にとって決定的な点は、Windowsの優れたGUIでした- TortoiseHg 。 Linuxでもサポートされているようです(自分で試したわけではありません)。そしてもちろん、ほとんどのLinuxバージョン用のコマンドラインディストリビューションがあります。

もちろん、フェンスのこちら側からは簡単に思えますが、多忙な学生のコンセプト、利点、そして日常の操作は、慣れにくいでしょう。しかし、結局のところ、即時コミット、任意のリビジョンに戻してそこから新しいブランチを自動的に作成する機能、そしてインテリジェントな差分/マージは、かけがえのないものです。

お役に立てれば!

11

学生が本当に使いやすいように、自動コミットをオンにしてSVNサーバーをインストールし、webdavを使用して共有することができます。この方法では、WebDAVを使用してディレクトリをマウントするだけで、保存を押すたびに自動コミットされます。TortoiseSVN、Eclipse/Visual Studioプラグイン、またはViewVCなどのWebアクセスソリューションを使用すると、履歴に簡単にアクセスできます。アクセス制限が必要な場合は、統合されたSubversion認証を使用できます(- こちら を参照)。これは、細かいアクセス制御のための単純な構成ファイルを使用します。

設定は非常に簡単になりました(そして、より良いドキュメントがあります- SVN Book を見てください)が、アクセス制限とWebインターフェースを備えた複数の個別のリポジトリが必要な場合、少し複雑になる可能性があります。

Autocommitは、コンピューター内で起こっていることがWordドキュメントのバージョン管理を必要とする手掛かりがない「私の会社員/上司」のためのソリューションです。プログラミングコースを受講している学生は、まともなSCMを使用する方法も学ぶ必要があります。

GitとMercurialは、分散された性質により共有が容易になるのでいいですが、どちらのツールにも本当に使いやすいGUIインターフェースがありません(TortoiseHgは有望に見え、gitkは非常に優れたリポジトリブラウザーですが、学生はまだコマンドラインツールに頭を抱え、ツールを最大限に活用します。また、分散SCMの概念は、理解するのが少し複雑です。

プロ側では GitHub のようなパブリックホスティングソリューションを使用でき、サーバーのセットアップについて心配する必要はありません。これにより、ソリューションの共有も非常に簡単になりますが、「相互にのみ」という要件が満たされなくなります。とにかく、あなたが彼らがコードを交換するのを止めることはできないだろうと思います。コースワークでの私の経験では、コードを見て、それがユニークであることを確認することが、コピーを防ぐ唯一の方法であることを発見しました。

PlasticSCM を使用することもできます。これは、多くのIDEに対応するすてきなインターフェイスと、教育機関向けの(少なくともサイトの主張による)無料のライセンスを備えています。

8
VolkA

ソース管理システムのセットアップに対処する理由はないと思います。使用条件を確認します。 google code と飛び込みます。

仲間のCS学生と私は昨年それを使用しましたが、それはうまく機能し、唯一の前提条件はインターネット接続です:-)

7
Kasper

Darcsは優れたDVCSであり、特にCSクラスのプロジェクトなどの小規模なプロジェクトに適しています。私が大学でDarcsまたはGitを紹介されたことを願っています。また、学生に紹介したことを賞賛します。

私はGitを日常的に使用しています。非常に堅牢なDVCSですが、小規模なプロジェクトには少々やり過ぎです。

どちらを選ぶか、これらのバージョン管理システムのどちらも本当に良いです。

7
thekingoftruth

BazaarMercurial 、および Git ケースに適したサウンド-リポジトリを作成するのは簡単で、共有する必要があるすべての学生は、お互いのリポジトリへのファイルシステム。

7
orip

darcs sendの設定は簡単です。darcs send <remote repo>を実行すると、リモートリポジトリの_darcs/prefs/emailを調べて、メールの送信先を決定します。そこに何もない場合は、代わりにユーザーにプロンプ​​トを表示します。

パッチの受信者はファイルを保存し、適切なリポジトリでdarcs apply <patch file>を実行するだけです。

したがって、各学生は_darcs/prefs/emailにある自分のメールアドレスを使用して独自のリポジトリを作成し、パッチをメールで交換できます。

5

私はBazaarで非常に良い経験をしました。 Git/Mercurialと同様に配布されます。これはサーバーレスです。リモートでアクセスしている場合でも、リポジトリをホストしているサーバーにデーモンをインストールする必要はありません(つまり、FTP/SFTP共有として機能します)。

分散型VCSは最も柔軟性があります。より伝統的な「中央」リポジトリからブランチをチェックアウトして、中央サーバーとは別の独自の小さな開発を分岐させることができるというすべての利点を得て、おそらく変更を元に戻すことができます。

私はまだ試していませんが、Subversionなどの他のVCS用のインポートツールがあります。

5
thomasrutter

権限に関しては、外部のサービスはあなたの大学のITスタッフの時間を必要としません。

たとえば、 Bitbucket (Mercurialを使用)では、最大5人のユーザーで無制限のプライベートリポジトリが許可されるようになりました。毎週新しい生徒のペアがそれぞれ新しいプロジェクトに取り組んでいると思います。つまり、リポジトリを初期化し、他のユーザーを追加するだけでよいのです。

毎週新しいプロジェクトに取り組んでいない場合は、権限を削除して追加する必要があります。各生徒が引き続きアクセスできるように、Bitbucketに複数のリポジトリ(アカウントごとに1つ)を用意することをお勧めします。 (これはとにかくいいアイデアですが、1週間のプロジェクトの場合のみ、1つの学生アカウントにリポジトリを所有させ、もう1つのアカウントに許可を与えておくほうが簡単な場合があります。)

どのVCSについては、Mercurialがあなたのプラットフォームに最も適していると思います。TortoiseHgは、新しいユーザーがコマンドラインインターフェイスに慣れていない(そして学ぶ時間がない)場合、特に探索するのに適しています。

状況に応じて、DVCSの利点は、大学サ​​ーバー(存在する場合)上のコピーが本格的なリポジトリであることです。あなたやTAがアクセスできると便利です。これは設定が簡単で、毎週変更するのではなく、すべての学期が続くでしょう。

4
Roger Pate

Subversionリポジトリの設定は簡単です。私は、小規模なプロジェクト(Stack Overflowで回答するためのコードを開発するなど)の1回限りのものとして頻繁にセットアップし、SCMシステムを学ぶことができる他の人が問題を抱えることはないと思います。

$ svnadmin create /home/cjs/repo
$ mkdir my-project
$ cd my-project
$ vi hello.c
  [...hack hack hack...]
$ svn import -m 'Initial project import.' file:///home/cjs/repo
Adding         hello.c

Committed revision 1.

そうは言っても、共有は確かに問題です。生徒が同時に作業するときに常に一緒に作業する場合は、USBドライブを使用することができます。USBドライブを取り外して、必要なときにそれをやり取りするだけで、後で一人でプログラミングする人は、すぐにハングアップできるからです。それ。しかし、それは完全に便利ではありません。

別のオプションは、それらがすべて共有Unixシステムで動作しているように見えるため、グループの残りの部分(またはすべてのユーザー)に対して実行ビットを設定せずに読み取りビットを設定してディレクトリを作成し、その下のリポジトリにs3cr3t名を使用することです、2人の学生だけが知っている1つ。その秘密の名前を教授に渡すと、彼はいつでも学生のレポを調べることができます。 (「割り当ては時間どおりに送信されましたが、電子メールシステムはそれを失いました。そのコミットの時間を見てみましょう...」)スクリプトでこれを設定できます。

実際、そのことを考えれば考えるほど、好きになります。特定の方法では、学生はパッチを渡す(またはそうするのを忘れる)ことに対処する必要がないため、gitソリューションよりも簡単であり、学生はコミットが発生する前に、コミットする前にマージを処理する必要があります。リポジトリ(その後の処理を無期限に延期する機能)。

3
Curt J. Sampson

更新:6年後、私はSubversionの使用を二度と考えなくなりました。 Gitはその方法です。したがって、私はまだSVNは少し「より単純」だと思いますが、もはや教える価値すらありません。

私はCVS、SVN、Bazaar、およびGitを(導入の順序で)使用しており、SVNが進むべき道であると学生に言わなければなりません。実際、私はTAのリーダーでしたが、タールと電子メールのスクリプトであった古い「送信スクリプト」の代わりにSVNを実装しました。 Labstaffは、Apache SVN-DAVベースのリポジトリをセットアップし、authzファイルを使用して、TAとインストラクターが生徒ごとのディレクトリとグループプロジェクトの権限を非常に細かいレベルで制御し、生徒が最初のコミットへの非常に単純なパスを利用できるようにしました。 my tutorial を参照してください(最新のTAによって取得された資格情報..うーん..)

システム管理者の介入なしでSubversionを使用することに関して、私はこれもグループプロジェクト設定で行ったことがあります。グループメンバーの誰もこれまでにSubversionを使用したことがなく、ほとんど混乱せずにコミットしていました(1つを除くすべて)。 。また、基本的なSSHアクセスのみでこのような安全な共有リポジトリをセットアップするためのチュートリアルを作成しました here

私は間違いなく同意しないgitは、VCSシステムについて言及しているだけでなく、mac-daddy-ライナス自身が書いたVCSキング、git。 gitがsvnよりも複雑ではないことは事実ではなく、成熟したn00bツールが不足しているだけで、このシナリオでそれを使用しない理由として十分です。私は、Netbeansで開発している新しいプロジェクトにgitを使い始めたばかりで、Netbeans統合で深刻な制限にすでに直面していました。単一学期では、svnが提供しない機能を使用しないため、gitは過剰です。

3
ColinM

WindowsでのSubversionはTortoiseSVNの設定と同じくらい簡単です。これを使用するための学習曲線は少しありますが(特に、以前にバージョン管理を使用したことがない場合)、半分のレッスンに専念し、PowerPointスライドをダウンロードして提供することで、それを助けることができます。

一元化について-無料のSVNプロジェクトホスティングを提供するWebサイトについて聞いたことがあります。クイックGoogle検索が表示されました this ページですが、確かにそれ以上あります。

2
Vilx-

本当に設定が本当に簡単なものを探しているなら、無料のSVNホスティングオプションを手に入れてみてください。設定する必要はありません。

悲しいことに、誰もがあなたをAssembla、Unfuddleであることをあなたに指摘したであろう2つの古いものは彼らの無料のホスティングのサポートを落としました(またはせいぜいプライベートにしたいのであれば) Origo これはまだ使用できますオープンとクローズの両方のホスティングを提供します。

これの利点は、すべてのプロジェクトを所有し、すべてに従うことができ、アクセス権を持つ人を簡単に制御できることです。リポジトリを作成する権利について心配する必要はありません。

このルートをたどり、複雑さを排除したい場合は、GUI svnアプリケーションを使用して、学習を簡単に行う必要があります(多くのマージが行われることはないと思うので)。 tortoisesvn をお勧めします。WindowsExplorerのコンテキストメニューに直接アクセスできます。

2
Stephen Bailey

あなたの最善の策は、IT部門と協力して、学生が新しいSVN/CVSリポジトリを簡単に作成するためのシステム/方法を設定することです。

おそらく、IT部門が学生にリポジトリを作成するのに必要な特権を与えて、たとえ彼らが学生自身に特権を与えなくても、あなたに与えることができるでしょう。学期の初めに学生のリストからリポジトリを大量に作成するためのスクリプトをかなり簡単に書くことができるでしょう。

1
SoapBox

Linux用RCS。

WidowsのRCSよりも単純なものは何も見つかりませんでしたが、すべてのRCSポートが適切に機能しているわけではないので、RCSポートを試してみると単純ではなくなります。 Windowsは開発者にとって単純ではありません。 http://www.cs.purdue.edu/homes/trinkle/RCS/ からのWindowsポートはかなり良いです。

1
Tom Hall