2015-11-30 6 views
0

У меня есть студент, который приходит на помощь в проекте в течение месяца. Я хочу, чтобы он раскошелил репозиторий, но затем работал над кодом локально и не мог изменять изменения до тех пор, пока не просмотрел и не проверил их все. Как это достигается через GIT? Обратите внимание, что мы запускаем Windows, и я использую GUI Extensions GUI, и все работает в локальной сети (пока нет GIThub и т. Д.). Также на нашем сервере есть --bare репо.Как развить в GIT, но не пустить обратно в исходный пульт

Я могу заставить его работать, заставив его клонировать голый репо, а затем на его локальном репо удалять удаленное репо. Это разумная вещь? Позже он сможет снова объединить свой код с помощью удаленного добавления репо?

+0

ли * сервер * и на Windows? – Makoto

+0

@ Макото да все - Windows. – Dan

+1

В этом случае вам не понадобится чистое решение Git.Я не знаком с миром серверов Windows и как установить там сервер Git, но ключевое слово (и), которое вы ищете, - это Gitosis или Gitolite (вероятно, Gitolite). Только Git не может справиться с этим для вас. – Makoto

ответ

1

Я не мерзавец гуру, но FWIW здесь мои мысли ...

В конечном счете, потому что главный репо находится в локальной сети и осуществляется доступ непосредственно клиентами, я не думаю, что вы «найти решение, которое реализует любые виды контроля доступа, такие как серверы git (например, github и bitbucket).

Однако, все не потеряно.

Почему бы вашему ученику не клонировать основное репо, создать новую ветку и работать в этой новой ветке? Он может даже подтолкнуть эту ветку к основному репо, что дает вам возможность легче пересмотреть свою работу. Если другие люди проверяют работу в главной ветке, то ваш ученик сможет легко получить эту работу и объединить ее в свою ветку, поэтому, если он что-то сломает, он узнает довольно быстро. В конце концов, когда вы будете готовы рассмотреть и объединить свою работу, вы можете заставить его вносить свои изменения (т. Е. Свою ветку) в основное репо. Затем вы можете объединить мастер в эту ветвь, убедитесь, что все работает так, как предполагается, и, предположив, что это так, вы можете просто объединить свою ветку в мастер.

Все это будет работать нормально, если он не переключит ветви обратно на мастер. Но великая вещь в git заключается в том, что даже если он снова переключится на хозяина, И совершит изменения, И подталкивает их к основному репо, вы всегда можете отбросить их обратно. :-)

+0

Спасибо, это звучит неплохо. Похоже, что те, которые были до этого связаны с Ojomio, могут получить контроль доступа, но потом я должен научиться тому, как это сделать, и ваш способ звучит намного проще. – Dan

1

Это разумная вещь? Позже он сможет снова объединить свой код с помощью удаленного добавления репо?

Это можно сделать без проблем.

Но лучшим решением может быть предоставление ему только доступа для чтения в голый репозиторий на языке. Таким образом, он мог бы получить новейший код и адаптировать его разработку с последней версией.

Или еще лучше иметь другое голое хранилище, где он мог бы написать и что вы добавляете в качестве пульта дистанционного управления в вашем хранилище, и таким образом вы могли бы следовать его развитие и интеграция его развитие (вы буфер ;-))

+0

Доступ для чтения/записи, по-видимому, не является вариантом для нашей структуры сети/папок в соответствии с нашими ИТ-ребятами. Я не собираюсь с ними драться. Спасибо, в любом случае. – Dan

2

Да, он будет. Но можно написать скрипт hook на «сервере» git (например, pre-receive), который откажется объединить фиксацию, если она соответствует определенным критериям. Это в основном то, что делают все системы git (GitLab, Stash, GitHub).

Для получения дополнительной информации обратитесь к http://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

+0

Спасибо, не могли бы вы привести пример того, как будет написан такой скрипт? – Dan

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

  • Нет связанных вопросов^_^