Какую систему контроля версий проще всего настроить и использовать для игрушечных проектов? - 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 ]

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

Я бы сказал, что Git может соответствовать всем требованиям:

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

Взгляните на этот сайт Git Magic или даже этот совет сайта GitReady

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

Второй выбор Ртутный

Преимущества

  • Отличная документация.
  • Команда графического просмотра для отображения ветвления.
  • Кросс-платформенный.
  • Поставляется с графическим интерфейсом для всех платформ (TortoiseHG или thg).
  • Встроенный веб-сервер для просмотра проекта.
  • Может сохранить ваш проект на вашем флэш-накопителе.
    • Работу можно сохранить, даже если запомнился только один член пары их ноутбук. Не то чтобы это когда-либо происходило.

Недостатки

  • Должен установить Python, если его еще нет.
    • Легко сделать, но это еще один шаг.
  • Понимание различия между push / pull и update / commit.
    • (Это общее для всех распределенных VCS).
  • Различие между головками и наконечниками.
  • Некоторые команды не доступны сразу; они должны быть явно включен.
    • (Сообщество, как правило, считает это выгодным, поскольку все упрощается; некоторые другие не согласны).
16 голосов
/ 28 ноября 2008

Subversion прост в установке, на Windows, Linux и Mac OS X. Я не знаю, в какой программе они программируют, но подключаемый модуль Eclipse для Subclipse довольно прост в установке и скрывает некоторые сложности хранилища.

А сложность репозитория? В любом случае это просто наличие папки с стволом, тегами и ветвями внутри каждого проекта. И у них может не быть много времени, но у них должно быть время, чтобы изучить SVN (или подобное), потому что это умение хорошо смотрится в их резюме.

14 голосов
/ 20 октября 2009

Я бы посоветовал взглянуть на Ископаемое - это один исполняемый файл без зависимостей для запуска, он обрабатывает весь трафик по HTTP, хранит все данные репозитория в одном файле, который может быть назван как угодно, и включает Вики с контролем версий, отслеживание ошибок и веб-сервер из коробки. Ох, и он полностью распределен.

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

Я бы порекомендовал Mercurial (также называемый 'hg'). Это распределенная VCS с открытым исходным кодом, и она не нуждается в центральном хранилище. Использовать его изо дня в день легко. На официальном сайте достаточно документации. Например, проверьте QuickStart .

Решающим моментом для меня стал отличный графический интерфейс для Windows - TortoiseHg . Кажется, это также поддерживается в Linux (сам не пробовал). И, конечно же, для большинства версий Linux существуют дистрибутивы командной строки.

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

Надеюсь, это поможет!

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

Для реальной простоты использования для ваших студентов вы можете установить сервер SVN с включенной автоматической фиксацией, доступ к которой осуществляется через webdav. Таким образом, они могут просто смонтировать свой каталог, используя WebDAV, и будут выполнять автоматическую фиксацию всякий раз, когда нажимают сохранить - доступ к истории легко осуществляется с помощью TortoiseSVN, плагинов Eclipse / Visual Studio или некоторых решений для веб-доступа, таких как ViewVC. Для ограничения доступа вы можете использовать встроенную аутентификацию Subversion (смотрите здесь ), которая использует простой файл конфигурации для точного контроля доступа.

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

Autocommit - это скорее решение для «моего офисного работника / начальника», который не имеет ни малейшего представления о том, что происходит внутри компьютера, и требует контроля версий для текстовых документов. Студенты, проходящие курс программирования, возможно, также должны научиться пользоваться приличным SCM.

Git и Mercurial были бы хороши из-за их распределенной природы, что облегчает совместное использование - но у обоих инструментов нет интерфейсов с графическим интерфейсом, которые действительно просты в использовании (TortoiseHg выглядит многообещающе, а gitk - очень хороший браузер репозитория, но ваши студенты все еще придется обернуть головы вокруг инструментов командной строки, чтобы в полной мере использовать инструменты). Кроме того, концепция распределенных SCM немного сложнее для понимания.

Для профессионалов вы можете использовать общедоступные решения для хостинга, такие как GitHub , и вам не придется беспокоиться о настройке сервера. Это также делает обмен решениями действительно простым, но нарушает ваши требования «только друг с другом». Но я полагаю, что вы все равно не сможете помешать им обмениваться кодом. По опыту курсовой работы я обнаружил, что просмотр кода и проверка его уникальности - единственный способ предотвратить копирование.

Вы также можете использовать PlasticSCM , который имеет действительно приятные интерфейсы для многих IDE и (по крайней мере, сайт требует) бесплатных лицензий для образовательных учреждений.

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

Не вижу смысла заниматься настройкой системы контроля версий. Ознакомьтесь с условиями использования, например, Google Code и погрузитесь.

Один из студентов CS и я использовали его в прошлом году, и он прекрасно работает, и единственным условием является подключение к интернету: -)

7 голосов
/ 29 ноября 2008
Звук

Bazaar , Mercurial и Git подходит для вашего случая - тривиально создавать репозитории, и все, что ученикам нужно поделиться, - это доступ для чтения на файловая система для репозиториев друг друга.

7 голосов
/ 16 марта 2010

Darcs - превосходная DVCS, особенно для небольших проектов, например, для классов CS. Мне бы хотелось, чтобы меня познакомили с Дарксом или Гитом в колледже, и я также благодарю вас за то, что вы представили его своим студентам.

Я использую Git ежедневно. Это очень надежная DVCS, но, возможно, немного излишняя для небольших проектов.

Выберите, любая из этих систем контроля версий действительно хороша.

5 голосов
/ 24 февраля 2009

У меня был очень хороший опыт работы с Bazaar . Как и Git / Mercurial, он распространяется. Он без сервера - вам не нужен демон, установленный на сервере, на котором размещен репозиторий, даже если вы обращаетесь к нему удаленно (т. Е. Он может работать как общий ресурс FTP / SFTP).

Распределенная VCS является наиболее гибкой. Вы можете извлечь ветку из более традиционного «центрального» репозитория и получить все преимущества от возможности раскошелиться на свою маленькую разработку отдельно от центрального сервера и т. Д., А затем, возможно, отодвинуть изменения обратно.

Существуют инструменты импорта для других VCS, таких как Subversion, хотя я их не пробовал.

...