68

私はCS部門で3番目に必要なイントロコースを教えています。私の宿題の1つは、前の課題のために書いたコードをスピードアップするように生徒に求めています。10倍のスピードアップは日常的なものです。100または1000の係数は前代未聞ではありません。(1000倍のスピードアップのために、malloc()で新人のミスを犯したに違いありません。)

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

あなたがプログラムを改善している間、それを壊すことも可能です。取り消すのはいいことではないでしょうか?

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

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

既存のシステムに関する私のコメントは次のとおりです。

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

私は、初心者の学生にどのソース管理を使用するかについての提案を求めています。既存のシステムの上に薄いベニヤを置き、既存のドキュメントを簡素化するためのリソースを見つけることができると思います。おそらく、新しいドキュメントを作成するためのリソースがありません。

では、変更をセットアップコミット、元に戻し、パートナーと共有するのは本当に簡単ですが、簡単にマージしたり、大規模に作業したりする必要はありません。

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

( Git Magicへの優れた参照と有益なコメントにより、他の回答よりも優れた回答を受け入れてくれてありがとう。)

4

18 に答える 18

82

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

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

このサイトGit Magic または、このヒント サイトGitReadyを見てください。

于 2008-11-28T19:11:11.167 に答える
48

Mercurialの2番目の選択

利点

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

短所

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

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

リポジトリの複雑さは? とにかく、各プロジェクト内にトランク、タグ、およびブランチフォルダーがあるだけです。そして、彼らにはあまり時間がないかもしれませんが、CVN (または類似のスキル) を学ぶ時間はあるはずです。

于 2008-11-28T18:57:54.907 に答える
15

Fossilを確認することをお勧めします-実行する依存関係のない単一の実行可能ファイルであり、HTTPを介してすべてのトラフィックを操作し、すべてのリポジトリデータを任意の名前を付けることができる単一のファイルに保持し、バージョン管理されたwiki、バグ追跡、およびWebを含みます-箱から出してすぐに使えるサーバー。ああ、それは完全に配布されています。

于 2009-10-20T10:09:32.350 に答える
11

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

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

もちろん、こちら側から見ると簡単に思えますが、忙しい学生にとっては、概念、利点、および日常の操作に慣れるのはそれほど簡単ではないかもしれません。しかし、最終的には、即時のコミット、任意のリビジョンに戻してそこから新しいブランチを自動的に作成する機能、およびインテリジェントな差分/マージは、かけがえのないものです。

お役に立てれば!

于 2008-11-28T20:13:37.157 に答える
8

学生が本当に使いやすいように、自動コミットをオンにして 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 と (少なくともサイトが主張する) 教育機関向けの無料ライセンスに対して非常に優れたインターフェイスを備えています。

于 2008-11-28T19:31:31.640 に答える
7

Darcs は優れた DVCS であり、特に CS クラスなどの小規模なプロジェクトに適しています。大学で Darcs や Git を紹介してもらえたらよかったのにと思います。また、学生に紹介してくれたことを称賛します。

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

どちらかを選んでください。どちらのバージョン管理システムも非常に優れています。

于 2010-03-16T00:08:21.000 に答える
7

BazaarMercurial、およびGitは、あなたのケースに適しているように聞こえます-リポジトリを作成するのは簡単で、学生が共有する必要があるのは、ファイルシステム上の互いのリポジトリへの読み取りアクセスだけです。

于 2008-11-29T03:51:43.363 に答える
7

ソース管理システムのセットアップに取り組む理由がわかりません。Googleコードなどの使用条件を確認して、飛び込んでください。

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

于 2008-11-28T19:20:37.497 に答える
5

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

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

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

于 2010-01-07T09:52:04.377 に答える
5

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

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

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

于 2009-02-24T16:04:14.357 に答える
4

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

たとえば、Bitbucket (Mercurial を使用) では、最大 5 ユーザーまで無制限のプライベート リポジトリを使用できるようになりました。私は、学生の毎週の新しいペアが新しいプロジェクトに一緒に取り組んでいることを推測しています。つまり、リポジトリを初期化し、他のユーザーを追加するだけでよいのです。

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

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

あなたの状況に固有の DVCS の利点は、大学のサーバー (ある場合) 上のコピーが完全なレポであることです。あなたや TA がアクセスできると便利な場合があります。これは、セットアップが簡単で、毎週変更するのではなく、学期全体にわたって続くはずです。

于 2010-10-04T08:05:05.870 に答える
3

Subversionリポジトリの設定は簡単です。私は頻繁に1つを小さなプロジェクト(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人の学生だけが知っているもの。その秘密の名前を教授に渡すことで、彼はいつでも学生のリポジトリを調べることができます。(「あなたは時間通りに課題を提出しましたが、電子メールシステムはそれを失いましたか?そのコミットの時間を見てみましょう...」)スクリプトはこれを設定するのに役立ちます。

実際、考えれば考えるほど、好きになり始めています。ある意味では、学生はパッチの受け渡しに対処する必要がなく(またはそうすることを忘れる)、コミットする前にマージに対処する必要があるため、gitソリューションよりも簡単です。リポジトリ(その後、それを無期限に処理するのを遅らせる機能を備えています)。

于 2009-05-20T01:23:38.267 に答える
3

更新: 6 年後、Subversion を何かに使用することは二度と考えません。Git がその方法です。そのため、SVN は少し「単純」だと思いますが、もはや教える価値さえありません。

私は CVS、SVN、Bazaar、Git を (紹介順に) 使用してきましたが、学生には SVN が最適だと言わざるを得ません。実際、私がリード TA を務めていたとき、tar と電子メールのスクリプトであった古い「サブミット スクリプト」の代わりとして SVN を実装しました。Labstaff は Apache SVN-DAV ベースのリポジトリをセットアップし、authz ファイルを使用して、TA とインストラクターは、学生ごとのディレクトリのアクセス許可を制御し、非常に細かいレベルでプロジェクトをグループ化して、最初のコミットへの非常に単純なパスを学生に残しました。私のチュートリアルを見る

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

mac-daddy-written-by-Linus-himself VCS の王様 git はもちろんのこと、あらゆる VCS システムについて言及するだけで十分に空白の外観を経験した初心者にとって、git が最高の VCS であることに私はまったく同意しません。git が svn ほど複雑ではないというのは単純に正しくありません。成熟したn00bツールがないことだけでも、このシナリオで Git を使用しない理由として十分です。Netbeans で開発している新しいプロジェクトに git を使い始めたばかりで、すでに Netbeans の統合で深刻な制限に直面しています。1学期では、svnが提供しない機能を使用するつもりはないので、gitはやり過ぎです。

于 2009-11-18T05:33:39.600 に答える
2

本当に簡単にセットアップできるものを探しているなら、無料の SVN ホスティング オプションを利用してみませんか。何もセットアップする必要はありません。

悲しいことに、誰もが Assembla であると指摘していた古い 2 つの Unfuddle は、無料ホスティングのサポートを終了しました (または、非公開にしたい場合は少なくとも) .

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

このルートに進み、複雑さを解消したい場合は、GUI svn アプリケーションを使用して学習を簡単にする必要があります (多くのマージが行われるとは思えないため)。tortoisesvnをお勧めします。これは、Windows エクスプローラーのコンテキスト メニューに直接挿入されます。

于 2008-11-28T19:36:17.077 に答える
2

Windows での Subversion は、TortoiseSVN をセットアップするのと同じくらい簡単です。これを使用するには少し学習曲線が必要ですが (特に、以前にバージョン管理を使用したことがない場合)、半分のレッスンを使用して、ダウンロードできるようにいくつかのパワーポイント スライドを提供することで、それを助けることができます。

集中化に関しては、無料の SVN プロジェクト ホスティングを提供している Web サイトについて聞いたことがあります。簡単な Google 検索でこのページが表示されましたが、確かに他にもあります。

于 2008-11-28T19:04:38.730 に答える
1

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

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

于 2008-11-28T19:01:01.110 に答える