Могу ли я использовать git для отправки задания?
Я преподаю новый курс в новом университете в этом семестре, и мне очень интересно, как мои ученики работают и работают с использованием лучших практик. Таким образом, я хотел бы назначить и получить домашнюю работу от них с помощью хранилищ git. К сожалению, я использую git, но я не понимаю его достаточно хорошо, чтобы узнать, какие потенциальные дыры в безопасности и как их избежать. Кроме того, я использовал git для управления личной версией и никогда в группе или команде.
Мой текущий план - настроить машину A с пользователями 1-12, соответствующую каждому из моих учеников. Я создам пару открытых/закрытых ключей ssh для каждого ученика и исходный репозиторий git. Затем студенты могут получить доступ к репозиторию для новых назначений и нажать на него, когда они отправляют.
В идеале, без особых проблем, я смогу нажать из главного репозитория в репозитории студентов, когда я даю задания. Если бы было возможно вытащить их из репозиториев в главный репозиторий, который также был бы аккуратным.
Изменить: этот текст был немного неясным. Я намерен для них нажать/вытащить их в отдельный репозиторий, когда они завершат задание или получили новый. Я не могу предположить, что я смогу перенаправить задания в свои ноутбуки:)
Итак, с чего начать? Чего я ищу? Это плохая идея? Если да, то почему?
Ответы
Ответ 1
Вы можете использовать Gitosis управлять SSH-доступом к репозиториям, как описано в scie.nti.st: Хостинг git репозитории, путь Easy (и Secure) и Tv cobweb: Snakepit и gitosis, вещи, над которыми я работал, и в Глава 4.7: Гитозис книги "Pro Git: профессиональная версия контроля". Он находится в Python и требует setuptools. Или вы можете попытаться найти его эквивалент, например gitolite (ранее гитоз -lite) в Perl.
Альтернативное решение для каждого из студентов будет иметь свой собственный репозиторий или пару репозиториев: частный, с которым он/она работает, и (полу) публичный, возможно, с доступом к SSH, который он/она нажимает на завершенную работу. Вы будете выполнять роль поддерживающего/интегратора и извлекать изменения из своих публичных репозиториев в свой репозиторий (или ваши репозитории). Студенты вытаскивают из вашего общего репозитория (или хранилища).
Ответ 2
Чтобы вы вставляли свои репозитории (принадлежащие их пользователю), подразумевается, что вам нужно использовать привилегии root, чтобы вставлять их самостоятельно. Почему бы не опубликовать путь к заданию и заставить его его вытащить?
Конечно, вы также можете ограничить ssh-ключи, чтобы можно было выполнить только заданную команду; вы могли бы ограничить пути в одном репо, принадлежащем одному пользователю, на основе предоставленного ключа.
Git - это DCVS, поэтому мне нравится ваша идея с несколькими учетными записями.
Ответ 3
Если вы используете Git, ваши ученики должны будут изучить множество концепций, касающихся управления конфигурацией программного обеспечения, контроля версий и т.д., что не является необходимым для обучения, скажем, курса географии. Вы преподаете курс SCM? Если это так, ваша идея звучит неплохо. Если нет, вы можете рассмотреть что-то вроде Moodle. Если ваши пользователи находятся в Windows, помните, что Git не подходит в этой среде.