Какую систему контроля версий проще всего настроить и использовать для игрушечных проектов? - PullRequest
68 голосов
/ 28 ноября 2008

Я преподаю третий обязательный вступительный курс в отделе CS. Одно из моих домашних заданий просит студентов ускорить код, который они написали для предыдущего задания. Фактор десять ускорений являются обычными; факторы 100 или 1000 не являются неслыханными. (Для ускорения в 1000 раз вы должны были сделать ошибки новичка с помощью malloc ().)

Программы улучшены по последовательности небольших изменений. Я прошу студентов записать и описать каждое изменение и полученное в результате улучшение.

Пока вы улучшаете программу, ее также можно сломать. Разве не было бы хорошо отступить?

Вы можете видеть, куда я иду с этим: мои студенты очень выиграют от контроля версий. Но есть несколько предостережений:

  • Наша компьютерная среда заблокирована. Все, что зависит от центрального хранилища, является подозрительным.
  • Наши студенты невероятно перегружены. Вы называете это не просто занятиями, а работой, спортом, музыкой. Чтобы они могли использовать новый инструмент, он должен быть невероятно легким и иметь очевидные преимущества.
  • Наши студенты работают в основном в парах. Получение бит назад и вперед между счетами проблематично. Может ли эта проблема быть решена с помощью распределенного контроля версий?
  • Сложность - враг. Я знаю, что установка репозитория CVS слишком затруднительна - у меня все еще есть проблемы, потому что я делаю это только один раз в год. Мне сказали, что SVN еще сложнее.

Вот мои комментарии к существующим системам:

  • Я думаю, что централизованный контроль версий (CVS или SVN) исключен, потому что у наших студентов нет административных привилегий, необходимых для создания хранилища, которым они могли бы поделиться с другим студентом. (Мы застряли с правами доступа к файлам Unix.) Кроме того, установка на CVS или SVN слишком сложна.
  • darcs очень прост в настройке, но не совсем понятно, как вы делитесь. darcs send (для отправки патчей по электронной почте) выглядит многообещающе, но не ясно, как ее настроить.
  • Вводная документация для git не для начинающих. Как и в случае с настройкой CVS, у меня возникли проблемы.

Я запрашиваю предложения относительно того, какой контроль источника использовать с начинающими студентами. Я подозреваю, что мы можем найти ресурсы, чтобы положить тонкий слой поверх существующей системы и упростить существующую документацию. У нас, вероятно, нет ресурсов для написания новой документации.

Итак, что действительно легко настроить , зафиксировать , вернуть и поделиться изменениями с партнером , но это не обязательно легко объединить или работать в масштабе?

Ключевым ограничением является то, что программные пары должны иметь возможность делиться работой друг с другом, и только пары и меняются каждую неделю . Наша инфраструктура - Linux, Solaris и Windows с файловым сервером netapp. Я сомневаюсь, что мой ИТ-персонал хочет создать группу Unix для каждой пары студентов. Есть ли более простое решение, которое я упустил?

(Спасибо за принятый ответ, который побеждает других за отличную ссылку на Git Magic , а также за полезные комментарии.)

Ответы [ 18 ]

5 голосов
/ 07 января 2010

darcs send тривиально для настройки - когда вы запускаете darcs send <remote repo>, он смотрит в _darcs/prefs/email удаленного репо, чтобы решить, куда отправить сообщение. Если там ничего нет, то вместо этого он запрашивает пользователя.

Получатель патча просто сохраняет файл и запускает darcs apply <patch file> в соответствующем репо.

Таким образом, каждый студент может иметь свои собственные репозитории со своим адресом электронной почты в _darcs/prefs/email и обмениваться патчами по электронной почте.

4 голосов
/ 04 октября 2010

Что касается разрешений, внешняя служба не потребует времени от ИТ-персонала вашего университета.

Например, Bitbucket (с использованием Mercurial) теперь позволяет неограниченное количество частных репо до 5 пользователей. Я предполагаю, что каждая новая недельная пара студентов вместе работает над новым проектом, что означает, что они могут просто инициализировать репозиторий, добавить другого пользователя, и они уйдут.

Если они не работают над новым проектом каждую неделю, разрешения нужно будет удалить и добавить, и я рекомендую им иметь несколько репозиториев (по одному на учетную запись) в Bitbucket, чтобы у каждого учащегося был постоянный доступ. (В любом случае, это было бы хорошей идеей, но только для недельных проектов может быть проще иметь учетную запись одного студента, имеющую репо, а другую - с разрешения.)

Что касается VCS, я считаю, что Mercurial лучше всего подойдет для ваших платформ - TortoiseHg особенно хорош для изучения новыми пользователями, если они незнакомы (и у вас нет времени на их изучение) интерфейсов командной строки .

В зависимости от вашей ситуации преимущество DVCS заключается в том, что их копия на сервере университета (если она есть) представляет собой полноценное репо. Вам или ТП может быть удобно иметь доступ, который должен быть проще в настройке и будет длиться весь семестр, а не меняться еженедельно.

3 голосов
/ 18 ноября 2009

ОБНОВЛЕНИЕ: Шесть лет спустя я бы никогда не подумал об использовании subversion для чего-либо еще. Git - это путь. Так что, хотя я все еще думаю, что SVN немного «проще», ему просто не стоит больше учить.

Я использовал CVS, SVN, Bazaar и Git (в таком порядке ознакомления), и я должен сказать студентам, что SVN - это путь. На самом деле, пока я руководил TA, мы внедрили SVN вместо старого «сценария отправки», который представлял собой сценарий tar и электронной почты. Labstaff установил репозиторий на основе Apache SVN-DAV и, используя файл authz, TA и инструктор могли контролировать разрешения для каталогов для каждого студента и групповых проектов на очень детальном уровне, оставляя студентам очень простой путь к их первому коммиту. См. мой учебник (учетные данные вырваны самыми последними TA .. хм ..)

Что касается использования Subversion без вмешательства системных администраторов, я делал это также в условиях группового проекта, где никто из членов моей группы никогда не использовал Subversion прежде, и большинство из них совершали с очень небольшим замешательством (все но один). Я также написал учебник по настройке такого безопасного общего хранилища с только базовым доступом по SSH здесь .

Я определенно не согласен , что git - лучшая VCS для начинающих, испытавших достаточно пустых взглядов при упоминании любой системы VCS, не говоря уже о короле VCS, написанном самим mac-daddy-by-Linus -self , мерзавец Это просто неправда, что git не более сложен, чем svn, и отсутствие только зрелых инструментов n00b является достаточной причиной, чтобы не использовать его в этом сценарии. Я только начал использовать git для нового проекта, который я разрабатываю в Netbeans, и уже столкнулся с серьезными ограничениями при интеграции Netbeans. В течение одного семестра вы не собираетесь использовать какие-либо функциональные возможности, которые svn не предоставляет, поэтому git является излишним.

3 голосов
/ 20 мая 2009

Настройка хранилища Subversion тривиальна; Я часто настраиваю его как одноразовую вещь для небольших проектов (таких как разработка кода для ответа на Stack Overflow!), И я сомневаюсь, что у кого-либо еще, кто вообще мог бы изучить систему 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-накопитель, так как они могут просто отключить его и передавать его туда и обратно, когда нужно, и человек, который собирается программировать один позже, может просто держаться за Это. Это не совсем удобно, хотя.

Другой вариант, поскольку все они работают в общей системе Unix, - создать каталог с установленным, но не считанным битом для остальной части группы (или всех пользователей) и использовать имя s3cr3t для репо под этим, тот, который знают только два студента. Передача этого секретного имени профу позволит ему в любое время изучить репозитории ученика. («Таким образом, вы отправили задание вовремя, но система электронной почты потеряла его? Позвольте мне просто посмотреть на время этого коммита…»). Сценарий может помочь установить это.

На самом деле, чем больше я об этом думаю, тем больше мне это нравится. В определенном смысле это проще, чем git-решение, потому что ученику не нужно иметь дело с передачей исправлений (или забывать это делать), и ученику придется сталкиваться с слияниями до его фиксации, а не когда хранилище (с последующей возможностью откладывать работу с ним на неопределенный срок).

2 голосов
/ 28 ноября 2008

Subversion в Windows может быть так же просто, как и установка TortoiseSVN. Для его использования есть некоторая кривая обучения (особенно если вы никогда ранее не использовали контроль версий), но вы могли бы помочь этому, посвятив ему половину урока и предоставив им слайды PowerPoint для загрузки.

Что касается централизации - я слышал о сайтах, предлагающих бесплатный хостинг проектов SVN. Быстрый поиск в Google обнаружил эту страницу, но есть и другие.

2 голосов
/ 28 ноября 2008

Если вы ищете что-то действительно простое в настройке, то почему бы не воспользоваться бесплатным хостингом SVN, вам не нужно ничего настраивать!

К сожалению, два старших, которые все бы указали на то, что вы ассемблы, развратники, отказались от поддержки своего бесплатного хостинга (или, по крайней мере, если вы хотите, чтобы они были приватными), но вы все равно можете использовать Origo это дает вам как открытый, так и закрытый хостинг.

Преимущество этого заключается в том, что вы можете владеть всеми проектами и следить за ними, а также легко контролировать людей, у которых есть доступ, и вам не нужно беспокоиться о правильности создания репозиториев.

Если вы идете по этому пути и хотите устранить сложность, то вы должны использовать svn-приложение с графическим интерфейсом, чтобы сделать обучение почти тривиальным (так как я сомневаюсь, что произойдет много слияний). Я бы порекомендовал tortoisesvn , проскальзывает прямо в контекстное меню проводника Windows.

1 голос
/ 28 ноября 2013

RCS для Linux.

Я не нашел ничего проще, чем RCS для вдов, но не все порты RCS работают хорошо, поэтому вы должны попробовать их, что делает его непростым. Windows просто не проста для разработчиков. Windows-порт от http://www.cs.purdue.edu/homes/trinkle/RCS/ довольно хороший.

1 голос
/ 28 ноября 2008

Я бы сказал, что лучшим вариантом будет попытаться поработать с вашим ИТ-отделом, чтобы настроить систему / метод для ваших студентов, чтобы они могли легко создавать новые репозитории SVN / CVS.

Возможно, вы могли бы заставить отдел ИТ предоставить вам привилегии, необходимые для создания репозиториев для ваших студентов, даже если они не будут давать привилегии самим студентам. Вероятно, вы могли бы довольно легко написать несколько сценариев для массового создания хранилищ из списков студентов в начале семестра.

...