Intereting Posts

Рабочий процесс Git / Github для студентов и проектов

Некоторые сокурсники и я пытаемся познакомить других студентов с git / Github, и проведение семинаров никогда не работало, чтобы возбудить слушателей и начать пользоваться инструментом и услугами. В этом году мы хотим попробовать и поработать над этим курсом, предлагая студентам использовать git для представления своих проектов для оценки.

Проблема в; мы еще не придумали правильный рабочий процесс для этого. В идеале все это можно было бы выполнить через Github. Наша школа имеет Github Enterprise (читайте неограниченные публичные / частные репозитории), поэтому у нас есть возможность поиграть. Я не уверен, сколько настроек мы можем сделать, я не совсем уверен, что все Github Enterprise предоставляет в этом.

Мой первый рабочий процесс был следующим.

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

Я почти уверен, что в этом есть несколько недостатков: одна из них заключается в том, что мы хотим, чтобы студенты работали конфиденциально. Викинг на частное репо может оказаться невозможным, и запрос на тягу, я уверен, не сработает.

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

Идея состоит в том, что, если учащиеся работают с git / github для проекта, они могут заставить их начать использовать управление версиями в целом для фактической работы над своим проектом. Конечно, будут ученики, которые ничего не сделают, пока они не закончатся. Это больше о том, как подвергнуть студентов технологии.

Ну, это не вопрос, который хорошо подходит для SO.

Тем не менее, вот некоторые из моих личных мыслей:

Как было указано в комментариях к вашему вопросу, использование Github [Enterprise] для этого может быть несколько выше, когда дело доходит до обучения Git. Хотя вам понадобится какой-то сервер, чтобы позволить студентам получить и передать свои данные, Github очень сосредоточен на своем веб-интерфейсе. Даже если использование Github для совместной работы является частью вашего класса, вы должны приложить значительные усилия для того, чтобы студенты сначала изучили Git.

Я не уверен на 100% о том, как поведение и разрешения ведут себя в GHE, но обычно это происходит следующим образом: публичный репозиторий можно разделить только на публичное репо; если пользователь forking хочет изменить статус репо на частный (если GHE даже разрешает это), он удалит соединение «fork» (тем самым делает невозможным выполнение запросов Pull). Если пользователь клонирует частный репозиторий, он будет автоматически закрытым, но, насколько я знаю, он сохранит список разрешений исходного репо. Это означает: если вы дадите всем своим ученикам доступ к закрытому репо, чтобы клонировать его, все их вилки будут (по умолчанию) также иметь эти разрешения, и еще раз их код не будет закрытым (достаточно).

В-третьих, я не считаю, что ОР – это хороший способ, чтобы студенты могли выполнять свои задания. PR предназначены для распространения кода / изменений в восходящее репо, но это приведет к смешению кода всех учащихся. Вместо этого попросите учащихся пометить коммит, который они хотят отправить для оценки, а затем где-нибудь уведомить вас о теге (опубликовать вопрос о Github, отправить письмо, что угодно). Расширяясь на этом, вы можете использовать серверное решение, такое как Gitolite , в котором вы можете запретить пользователям удалять теги – таким образом, после отправки студенты не могут изменять или возвращать свои материалы.

И, наконец: в зависимости от структуры присвоений в этом классе я не знаю, является ли использование одной структуры репо / fork хорошим способом изучения управления проектами. Предположим, что задания работают как в моем университете: каждые 1-2 недели студенты получают задания, которые в значительной степени автономны. Следуя стандартной конвенции с одним репо за проект, это будет где-то от одного до четырех репозиций на одного учащегося в неделю. Обработка этого с помощью fork-сетей создает значительные накладные расходы для вашего преподавателя (по крайней мере, на Github, когда вы делаете это вручную, используя API Github или более настраиваемое решение, такое как Gitolite, это может быть сценарий).
Если, с другой стороны, у вас есть один (или, может быть, два) проекта, на котором студент работает в течение всего класса, регулярно отправляя его для проверки (или один раз в конце), используя сеть fork или что-то подобное более осуществимо. Таким образом, идея использования тегов будет также обучать студентов условному использованию тегов для отметки важных этапов (которые в некоторых контекстах могут быть выпущены).

Это все от меня сейчас. Я, конечно, советую вам использовать более интерактивную среду, лучше подходящую для обсуждения. SO предназначен для вопросов, которые имеют относительно однозначный ответ. Вы можете остановиться на IRC-канале #git на irc.freenode.com или попробовать SO-чат; или, возможно, дискуссионный форум также будет работать хорошо.