Я преподаю третий обязательный вступительный курс в отделе CS. Одно из моих домашних заданий просит студентов ускорить код, который они написали для предыдущего задания. Фактор десять ускорений являются обычными; факторы 100 или 1000 не являются неслыханными. (Для ускорения в 1000 раз вы должны были сделать ошибки новичка с помощью malloc ().)
Программы улучшены по последовательности небольших изменений. Я прошу студентов записать и описать каждое изменение и полученное в результате улучшение.
Пока вы улучшаете программу, ее также можно сломать. Разве не было бы хорошо отступить?
Вы можете видеть, куда я иду с этим: мои студенты очень выиграют от контроля версий. Но есть несколько предостережений:
- Наша компьютерная среда заблокирована. Все, что зависит от центрального хранилища, является подозрительным.
- Наши студенты невероятно перегружены. Вы называете это не просто занятиями, а работой, спортом, музыкой. Чтобы они могли использовать новый инструмент, он должен быть невероятно легким и иметь очевидные преимущества.
- Наши студенты работают в основном в парах. Получение бит назад и вперед между счетами проблематично. Может ли эта проблема быть решена с помощью распределенного контроля версий?
- Сложность - враг. Я знаю, что установка репозитория CVS слишком затруднительна - у меня все еще есть проблемы, потому что я делаю это только один раз в год. Мне сказали, что SVN еще сложнее.
Вот мои комментарии к существующим системам:
- Я думаю, что централизованный контроль версий (CVS или SVN) исключен, потому что у наших студентов нет административных привилегий, необходимых для создания хранилища, которым они могли бы поделиться с другим студентом. (Мы застряли с правами доступа к файлам Unix.) Кроме того, установка на CVS или SVN слишком сложна.
- darcs очень прост в настройке, но не совсем понятно, как вы делитесь. darcs send (для отправки патчей по электронной почте) выглядит многообещающе, но не ясно, как ее настроить.
- Вводная документация для git не для начинающих. Как и в случае с настройкой CVS, у меня возникли проблемы.
Я запрашиваю предложения относительно того, какой контроль источника использовать с начинающими студентами. Я подозреваю, что мы можем найти ресурсы, чтобы положить тонкий слой поверх существующей системы и упростить существующую документацию. У нас, вероятно, нет ресурсов для написания новой документации.
Итак, что действительно легко настроить , зафиксировать , вернуть и поделиться изменениями с партнером , но это не обязательно легко объединить или работать в масштабе?
Ключевым ограничением является то, что программные пары должны иметь возможность делиться работой друг с другом, и только пары и меняются каждую неделю . Наша инфраструктура - Linux, Solaris и Windows с файловым сервером netapp. Я сомневаюсь, что мой ИТ-персонал хочет создать группу Unix для каждой пары студентов. Есть ли более простое решение, которое я упустил?
(Спасибо за принятый ответ, который побеждает других за отличную ссылку на Git Magic , а также за полезные комментарии.)