Как удостовериться, что мой мерзавец repo код в безопасности?

Ничто из этого не помогло мне. Я сделал это:

db.collection.find( {arrayName : {$exists:true}, $where:'this.arrayName.length>1'} )
7
задан Stewart Johnson 21 September 2008 в 06:20
поделиться

7 ответов

Я думаю, что Вы найдете, что в разработчиках практики предпочтет использовать центральный репозиторий, чем продвижение и получение по запросу между локальными репозиториями друг друга. После того как Вы клонировали центральный репозиторий, работая над любыми ответвлениями отслеживания, выборка и продвижение являются тривиальными командами. Добавление полудюжины пультов ДУ к локальным репозиториям всех Ваших коллег является болью, и эти репозитории не могут всегда быть доступными (выключенный, на забранном домой ноутбуке, и т.д.).

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

После того как Вы настроили центральный репозиторий, можно использовать рабочий процесс стиля cvs/svn, чтобы зарегистрироваться и обновить. обновление cvs становится выборкой мерзавца и переосновой, если у Вас есть локальные изменения или просто получение по запросу мерзавца, если Вы не делаете. фиксация cvs становится фиксацией мерзавца и нажатием мерзавца.

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

Что берет дисциплину, в обоих случаях предотвращает разработчиков, не допускающих длительные изменения в центральный репозиторий. Большинство из нас, вероятно, работало в ситуации, где один разработчик работает над функцией 'x', которому нужно коренное изменение в некотором базовом коде. Изменение заставит всех остальных должны полностью восстанавливать, но функция еще не готова к основному потоку, таким образом, он просто сохраняет проверенным до подходящего момента времени.

Ситуация очень похожа в обеих ситуациях, хотя существуют некоторые практические различия. Используя мерзавца, потому что Вы добираетесь для выполнения локальных фиксаций и можете управлять локальной историей, потребность продвинуть к центральному репозиторию не может чувствовать так же отдельный разработчик как с чем-то как cvs.

С другой стороны, использование локальных фиксаций может использоваться в качестве преимущества. Продвижение всех локальных фиксаций к безопасному месту на центральном репозитории не должно быть очень трудным. Локальные ответвления могут быть сохранены в разработчике определенное пространство имен тега.

Например, для Joe Bloggs, псевдоним мог быть сделан в его локальном репозитории выполнить что-то как следующее в ответ на (например). git mybackup.

git push origin +refs/heads/*:refs/jbloggs/*

Это - единственная команда, которая может использоваться в любой точке (такой как конец дня), чтобы удостовериться, что все его локальные изменения безопасно сохранены.

Это помогает со всеми видами аварий. Машина Joe аварийно завершается, и он может использовать другую машину, и выборка сохраняется фиксации, и продолжите от того, где он кончил. Joe плохо? Fred может выбрать ответвления Joe для захвата, это 'должно иметь', фиксируют это, он вчера сделал, но не имел шанса протестировать против ведущего устройства.

Вернуться к исходному вопросу. Должно быть различие между dVCS и централизовало VCS? Вы говорите, что полуреализованные функции и bugfixes не закончатся на центральном репозитории в dVCS случае, но я утвердил бы, что должно не быть никакого различия.

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

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

12
ответ дан 6 December 2019 в 10:55
поделиться

Я думаю, что это - ошибка, что использование распределенного VCS обязательно означает, что необходимо использовать его полностью распределенным способом. Это абсолютно допустимо, чтобы открыть общий репозиторий мерзавца и сказать всем, что репозиторий является официальным. Для нормального рабочего процесса разработки разработчики вытянули бы изменения от общего репозитория и обновили бы их собственные репозитории. Только в случае двух разработчиков, активно сотрудничающих на определенной функции, мог бы, они должны вытянуть изменения непосредственно друг от друга.

С больше, чем несколькими разработчиками, работающими над проектом, это было бы серьезно утомительно, чтобы должным быть не забыть вытягивать изменения от всех других. Что Вы сделали бы, если бы у Вас не было центрального репозитория?

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

4
ответ дан 6 December 2019 в 10:55
поделиться

Весьма распространено использовать "центральный" сервер в качестве полномочий в DVCS, который также предоставляет Вам место, чтобы сделать Ваши резервные копии.

1
ответ дан 6 December 2019 в 10:55
поделиться

Я нахожу этот вопрос быть немного причудливым. Принятие Вас использует нераспределенную систему управления версиями, такую как CVS, у Вас будут репозиторий на центральном сервере и происходящая работа над серверами разработчиков. Как Вы создаете резервную копию репозитория? Как Вы создаете резервную копию происходящей работы разработчиков? Ответ на те вопросы точно, что необходимо сделать для обработки вопроса.

Используя распределенное управление версиями, репозитории на серверах разработчиков являются просто происходящей работой. Вы хотите создать резервную копию его? Затем обратно это! Это настолько просто.

У нас есть автоматизированная система резервного копирования, которая захватывает любые каталоги от наших наших машин, которые мы указываем, таким образом, я добавляю любые репозитории и рабочие копии на моей машине к тому в последний раз, и включая мерзавца и включая репозитории CVS.

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

Даже если у Вас не было центрального репозитория, решением является то же: создайте резервную копию работы над машинами разработчика. Необходимо было делать это так или иначе. То, что происходящая работа находится в распределенных репозиториях вместо CVS, работающего копии или прямо неимеющие версию каталоги, является несущественным.

1
ответ дан 6 December 2019 в 10:55
поделиться

У Вас могли быть корневые каталоги разработчика, монтируют удаленные устройства по локальной сети. Затем только необходимо волноваться о создании сетевого безопасного устройства хранения данных. Или возможно Вы могли использовать что-то как Dropbox для копирования локального repo в другом месте беспрепятственно.

0
ответ дан 6 December 2019 в 10:55
поделиться

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

Мой собственный git_remote_branch инструмент может пригодиться для такого рабочего процесса (Обратите внимание, что он требует Ruby). Это помогает управляющим удаленным ответвлениям.

Как примечание стороны, говорящее о repo безопасности, на Вашем сервере, можно настроить рычаг постфиксации, который делает простой клон мерзавца или нажатие мерзавца к другой машине... Вы получаете актуальное резервное копирование после каждой фиксации!

0
ответ дан 6 December 2019 в 10:55
поделиться

Мы используем rsync для резервного копирования отдельных разработчиков .git каталоги к каталогу на сервере. Это - установка с помощью сценариев обертки вокруг клона мерзавца, и постфиксация и т.д. сцепляется.

Поскольку это сделано в сообщении -* рычаги, разработчики не должны помнить делать это вручную. И потому что мы используем rsync с тайм-аутом, если сервер понижается, или пользователь работает удаленно, они могут все еще работать.

0
ответ дан 6 December 2019 в 10:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: