2009-09-04 2 views
13

Я преподаю новый курс в новом университете в этом семестре, и мне очень интересно, чтобы мои ученики работали с использованием лучших практик. Таким образом, я хотел бы назначить и получить домашнее задание от них, используя репозитории git. К сожалению, я использую git, но я не понимаю его достаточно хорошо, чтобы узнать, какие потенциальные дыры в безопасности и как их избежать. Кроме того, я использовал git только для управления личной версией и никогда в группе или команде.Могу ли я использовать git для отправки задания?

Мой текущий план - настроить машину A с пользователями 1-12, соответствующую каждому из моих учеников. Я создам пару ssh public/private key для каждого ученика и исходный репозиторий git. Затем студенты могут получить доступ к репозиторию для новых назначений и нажать на него, когда они отправляют.

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

Редактировать: Этот текст был немного неясным. Я намерен для них нажать/вытащить их в отдельный репозиторий, когда они завершат задание или получили новый. Я не могу предположить, что я смогу перенаправить задания на свои ноутбуки :)

С чего начать? Чего я ищу? Это плохая идея? Если да, то почему?

+5

Я думаю, что это крутая идея. Я впал в депрессию от того, насколько мало я попал в инструменты для лучшей практики, такие как контроль версий во время учебы. Отличается ли его отличная идея. –

+1

Я думаю, вам нужно пойти за тем, чтобы они вытащили из репо, чтобы получить задание. Таким образом, они делают работу, а не вы. –

+0

Это блестящая идея. Возможно, даже настроить область на http://github.com/, чтобы включить инструкции назначения и т. Д. – grenade

ответ

5

Вы можете использовать Gitosis для управления доступом SSH к хранилищам, как описано в scie.nti.st: Hosting Git repositories, The Easy (and Secure) Way и Tv's cobweb: Snakepit and gitosis, things I've been working on сообщений в блоге, и в Chapter 4.7: Gitosis из «Pro Git: профессиональный контроль версий» книги. Он находится в Python и требует setuptools. Или вы можете попытаться найти его эквивалент, например gitolite (ранее gitosis-lite) в Perl.

Альтернативное решение для каждого из студентов будет иметь собственный репозиторий или пару репозиториев: частный, с которым он/она работает, и (полу) общедоступный, возможно, с доступом к SSH, который он/она нажимает на завершенную работу , Вы будете выполнять роль поддерживающего/интегратора, и вытащите из своих общедоступных репозиториев в ваш репозиторий (или ваши репозитории). Студенты вытащили из вашего общего хранилища (или хранилищ).

+0

Спасибо Якуб. Вы рекомендуете gitosis или учетные записи пользователей для поддержки отдельных репозиториев? Оба кажутся жизнеспособными вариантами, и я не уверен, что будет проще и безопаснее. –

+0

Мне не нужно настраивать многопользовательские репозитории git, поэтому я не могу вам этого сказать; У меня нет личного опыта такой установки. Я бы рекомендовал прочитать соответствующие главы «Pro Git» (и, возможно, также «Руководство пользователя Git» и «Git Community Book»). –

+2

gitosis - довольно удобное решение для управления репозиториями git и доступа пользователей. Вы можете управлять всеми репозиториями и разрешениями доступа через 1 файл конфигурации. Я использую гитоз в течение года, и управление и использование действительно просты. Это определенно стоит посмотреть. – maff

2

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

Конечно, вы также можете ограничить ключи ssh так, чтобы выполнялась только данная команда; вы могли бы ограничить пути в одном репо, принадлежащем одному пользователю, на основе предоставленного ключа.

Git - это DCVS, поэтому мне нравится ваша идея с несколькими учетными записями.

+0

«Чтобы вы вставляли свои репозитории (принадлежащие их пользователю), подразумевается, что вам нужно использовать привилегии root, чтобы вставлять их в свои собственные». Я надеюсь, что смогу обойти это, добавив себя в группу каждого ученика. Конечно, у меня нет проблем с использованием sudo в этом случае :) –

+0

Да, возможно, просто заставляя их umask на 002 делать трюк (делая их созданные группы файлов доступными для записи). –

+1

'git init' имеет опцию' --shared' только для этой ситуации. Git настроит биты доступа к группе в репозитории на то, что имеет смысл (для группы). –

2

Если вы используете Git, вашим ученикам придется изучить множество концепций, касающихся управления конфигурацией программного обеспечения, контроля версий и т. Д., Что не является необходимым для преподавания, скажем, курса географии. Вы преподаете курс SCM? Если это так, ваша идея звучит неплохо. Если нет, вы можете рассмотреть что-то вроде Moodle. Если ваши пользователи находятся в Windows, помните, что Git не в лучшем состоянии в этой среде.

+0

Согласен, вам действительно нужно убедиться, что они осваивают инструмент, поэтому они не теряют данные и т. Д. Поэтому вам нужно потратить несколько часов на обучение первым основам VCS/DVCS, а затем git specificics (reflog, index и т. Д.). – tonfa

+0

Это может быть выключатель. Несмотря на то, что класс обучается на уровне выпускников студентам со степенью бакалавриата по информатике, не будет никакого материала курса по контролю версий. Я надеюсь, что они смогут использовать VERY basic git add/commit/push, чтобы включить их назначения. Я мог бы выделить час в лаборатории, чтобы познакомить их с git, но не более того. –

Смежные вопросы