Используете ли вы распределенный контроль версий?

Вы можете сортировать оба:

sorted(a) == sorted(b)

Сортировка счетчика также может быть более эффективной (но для этого требуется, чтобы объект был хешируемым).

>>> from collections import Counter
>>> a = [1, 2, 3, 1, 2, 3]
>>> b = [3, 2, 1, 3, 2, 1]
>>> print (Counter(a) == Counter(b))
True

37
задан basszero 10 April 2009 в 16:30
поделиться

18 ответов

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

  1. управление Локальной версией. Иногда я работаю над чем-то, и я хочу сохранить историю версий на нем, но я не готов продвинуть его к центральным репозиториям. С распределенным VCS я могу просто согласиться на свой локальный repo, пока это не готово без ветвления. Тот путь, если другие люди вносят изменения, в которых я нуждаюсь, я могу все еще получить их и интегрировать их в мой код. Когда я готов, я выставляю его к серверам.
  2. Меньше конфликтов слияния. Они все еще происходят, но они, кажется, являются менее частыми, и являются меньшим количеством риска, потому что во всем коде регистрируются к моему локальному repo, поэтому даже если я порчу слияние, я могу всегда создавать резервную копию и делать это снова.
  3. Отдельный repos как ответвления. , Если у меня есть пара векторов разработки, работающих одновременно, я могу просто сделать несколько клонов своего repo и разработать каждую функцию независимо. Тот путь, если что-то фрагментируется или уменьшилось, я не должен вытаскивать части. Когда они готовы пойти, я просто объединяю их вместе.
  4. Скорость. Подвижный намного быстрее для работы с, главным образом потому что большинство общих операций локально.

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

30
ответ дан tghw 10 April 2009 в 16:30
поделиться
  • 1
    Он говорит его doesn' t имеют источник, но он кажется, что у него действительно есть банки. Я думаю, что он должен быть в порядке без насмешек. – Nathan Hughes 11 February 2011 в 14:38

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

я имею мышление, что наши инструменты никогда не должны мешать фактической работе; они должны сделать работу легче. Так, после нескольких голов, загоняющих события, я взял на поруки. Я советовал бы делать некоторые действительно выносливые тесты с Вашей командой прежде, чем раскачивать лодку, потому что модель очень отличается, чем, к чему, вероятно, приучено большинство devs в мире SCM.

1
ответ дан Ian Patrick Hughes 10 April 2009 в 16:30
поделиться

Используя Подрывную деятельность

Подрывная деятельность не распределяется, так, чтобы заставил меня думать, что мне нужна ссылка Википедии в случае, если люди не уверены, о чем я говорю:)

0
ответ дан Chris Blackwell 10 April 2009 в 16:30
поделиться

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

bzr поддерживает довольно много отличающиеся рабочие процессы от соло посредством работы централизованным репозиторием к полностью распределенному. С каждым ответвлением (для разработчика или функции) способный быть объединенными независимо, обзоры кода могут быть сделаны на на основание ответвления.

bzr также имеет большой плагин ( bzr-svn) разрешение Вам работать с репозиторием подрывной деятельности. Можно сделать копию svn repo (который первоначально требует времени, поскольку он выбирает всю историю для локального repo). Можно тогда сделать ответвления для различных функций. Если Вы хотите сделать быстрое исправление к соединительной линии, в то время как половина пути через Вашу функцию, можно сделать дополнительное ответвление, работу в этом, и затем объединяться назад для транкинга, оставив половину сделанной функции нетронутой и за пределами соединительной линии. Замечательный. Работа против подрывной деятельности была моим основным использованием до сих пор.

Примечание я только использовал его на Linux, и главным образом из командной строки, хотя это предназначено для работы хорошо над другими платформами, имеет графический интерфейсы пользователя такой как , TortoiseBZR и большая работа делаются на интеграции с IDE и т.п..

1
ответ дан Hamish Downer 10 April 2009 в 16:30
поделиться
  • 1
    Это означает банки, которые это могло найти, don' t имеют пакет, который Вы используете. Скорее всего, Ваш список банок является неправильным.Примечание: на MS-DOS необходимо использовать ; вместо : – Peter Lawrey 14 February 2011 в 20:50

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

С Мерзавцем, поддержка подмодуля делает много этого материала легким, и только минимум сценариев необходим. Наше усилие по разработке версий пошло путем, путь вниз, потому что ответвления легко поддержать и отследить. Способность дешево перейти и объединиться действительно делает довольно легким поддержать единственный набор источников через несколько проектов (контракты), тогда как прежде, любое разрушение к типичному потоку вещей было очень, очень дорого. Мы также нашли, что scriptabability Мерзавца огромен плюс, потому что мы можем настроить его поведение через рычаги или через сценарии, которые делают . git-sh-setup, и он не походит на груду клуджей как прежде.

у Нас также иногда есть ситуации, в которых мы должны поддержать наше управление версиями через распределенные, несетевые сайты (в этом случае, разъединенные безопасные лаборатории), и у Мерзавца есть механизмы для контакта с тот вполне гладко (пакеты, основной механизм клона, отформатировал патчи, и т.д.).

Часть этого - просто мы ступающий из начала 80-х и принимающий некоторые современные механизмы управления версиями, но Мерзавец "сделал его правильно" в большинстве областей.

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

2
ответ дан Ben Collins 10 April 2009 в 16:30
поделиться
  • 1
    Другие опции включают (a) добавление никакой-op проверки возможностей (например, first + 0;), (b) использующую явную шаблонную специализацию, или (c) перегрузку с SFINAE. Однако я don' t думают, что любой из них является столь же чистым или простым как подход диспетчеризации тега. – James McNellis 29 November 2010 в 20:07

Используя Подрывную деятельность с SourceForge и другими серверами по многим различным соединениям с командами среднего размера и это работает очень хорошо.

1
ответ дан Guy 10 April 2009 в 16:30
поделиться

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

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

у меня есть 2 способа совместно использовать мой код с людьми:

  • я совместно использую сервер с коллегой, и мы сохраняем основной repo для нашего проекта.
  • Для некоторого проекта OSS я продолжаю работать, мы создаем патчи нашей работы с Подвижным (hg экспорт), и maintener проекта просто применяют их на репозиторий (hg импорт)

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

4
ответ дан skinp 10 April 2009 в 16:30
поделиться
  • 1
    " Прокрутите Lock" кнопка в Logcat больше походит на Кнопку загрузки, that' s, почему я пропустил его... Спасибо за указание на него существует! – Maragues 22 July 2012 в 17:16

Не использование распределенного управления исходным кодом самостоятельно, но возможно эти связанные вопросы и ответы дают Вам некоторое понимание:

4
ответ дан Community 10 April 2009 в 16:30
поделиться
  • 1
    " Прокрутите Lock" кнопка не всегда работает..., это, кажется, очень ошибочно, к сожалению. – Stan 11 February 2013 в 12:26

В месте, где я работаю, мы решили переместиться от SVN до Базара (после оценки мерзавца и подвижный). Базар был легок начаться с простыми командами (не как 140 команд, которые мерзавец имеет)

преимущества, которые мы видим, способность создать локальные ответвления и работу над ним, не нарушая основную версию. Также способность работать без доступа к сети, делая diffs быстрее.

Одна команда в bzr, который я люблю, является отложить расширением. Если Вы начинаете работать над двумя логически различными частями кода в единственном файле и хотите фиксировать только одну часть, можно использовать отложить расширение для литерального откладывания других изменений позже. В Мерзавце можно сделать то же с игрой вокруг в индексе (район сосредоточения войск), но bzr имеет лучший UI для него.

большинство людей отказывалось отодвинуться, поскольку они должны ввести в двух командах, чтобы фиксировать и продвинуть (bzr ci + bzr нажатие). Также для них было трудно понять понятие ответвлений и объединяющийся (никто не использует ответвления или объединяет их в svn).

, Как только Вы понимаете, что, это повысит производительность разработчика. Пока все не понимают, что, будет непоследовательное поведение среди всех.

6
ответ дан cnu 10 April 2009 в 16:30
поделиться
  • 1
    @JustinDanielson: существует установка в разделе Android предпочтений для авторазрешения автопрокрутки при некоторых обстоятельствах. Можно отключить это, если Вы хотели бы. – Jon Adams 25 August 2013 в 15:02

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

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

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

5
ответ дан Jason Sparks 10 April 2009 в 16:30
поделиться
  • 1
    Каждый раз я нажимаю стрелки ползунка для прокрутки вверх и вниз по нему, включает ту кнопку снова, и автопрокрутки отступают к нижней части. Нажатие на строку и использование клавиш со стрелками для прокрутки работавший для меня. – JustinDanielson 28 April 2013 в 06:13

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

2
ответ дан James A. Rosen 10 April 2009 в 16:30
поделиться
  • 1
    Ничего себе, это было давным-давно. Когда я делал Android dev, я играл с этой установкой, но ошибка или в Eclipse или в LogCat заставит автоматическую прокрутку быть включенной и прочь. Бесконечное разочарование. – JustinDanielson 28 August 2013 в 21:22

Назад, прежде чем мы выключили рабочих станций Sun для разработки встроенных систем, мы использовали Sun решение TeamWare . TeamWare полностью решение для распределения с помощью SCCS в качестве системы версии файла локального репозитория и затем оберток что с рядом инструментов для обработки операций слияния (сделанный посредством переименования ответвления) назад к централизованным репозиториям, из которых могут быть многие. На самом деле, потому что это распределяется, действительно нет никакого главного репозитория по сути' (кроме условно, если Вы хотите его), и у всех пользователей есть свои собственные копии всего исходного дерева и изменений. Во время "отложенных" операций инструмент слияния с помощью diffs с 3 путями алгоритмически разбирается в том, что то, что и позволяет Вам, комбинируют изменения от различных разработчиков, которые накапливались со временем.

После переключения на Windows для нашей платформы разработки, мы закончили тем, что переключились на AccuRev. В то время как AccuRev, потому что это зависит от централизованного сервера, не является истинно распределенным решением, логически от рабочего процесса, модель очень приближается. Где TeamWare имел бы абсолютно отдельные копии всего в каждом клиенте, включая все изменения всех файлов, под AccuRev это сохраняется в центральной базе данных, и локальные клиентские машины только имеют текущую версию плоского файла вещей для редактирования локально. Однако эти локальные копии могут быть имеющими версию посредством соединения клиента с сервером и прослежены полностью отдельно от любых других изменений (т.е.: ответвления) неявно созданный другими разработчиками

Лично, я думаю, распределенная модель, реализованная TeamWare или видом гибридной модели, реализованной AccuRev, превосходит абсолютно централизованные решения. Главная причина для этого состоит в том, что нет никакого понятия необходимости проверить файл или блокировку файла другим пользователем. Кроме того, пользователи не должны создать или определить ответвления; инструменты делают это для Вас неявно. Когда существуют более многочисленные команды или различные команды, способствующие, или поддерживающий ряд исходных файлов это разрешает "инструмент, сгенерированный", блокируя связанные коллизии, и позволяет изменениям кода быть скоординированными больше на уровне разработчика, кто в конечном счете должен скоординировать изменения так или иначе. В некотором смысле распределенная модель допускает намного более прекрасную гранулярную "блокировку", а не курс гранулировал, блокируя установленный централизованными моделями.

3
ответ дан Tall Jeff 10 April 2009 в 16:30
поделиться
  • 1
    Я клянусь, что журнал раньше останавливался при нажатии на определенную строку. Я должен был думать о создании фильтра, потому что я действительно просто хотел катастрофические отказы, которые я теперь фильтрую через ' ACRA' так как я использую это, работы очарование! – Mischa 22 January 2012 в 20:28

Моя компания в настоящее время использует Подрывную деятельность, CVS, Подвижный и мерзавец.

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

, Чем работы действительно приятно для нас с Подвижным состоят в том, что наш (домой назрел) непрерывные серверы интеграции могут контролировать разработчика Подвижные репозитории, а также магистраль. Так, люди соглашаются на свой репозиторий, заставляют наш непрерывный сервер интеграции проверять его, и затем публиковать changeset. Мы поддерживаем много платформ, таким образом, не выполнимо сделать достойный уровень ручных проверок. Другая победа - то, что слияния часто легки, и когда они тверды, у Вас есть информация, необходимо сделать хорошее задание на слиянии. Как только кто-то заставляет объединенную версию работать, они могут продвинуть свое слияние changesets, и затем никто больше не должен повторять усилие.

самое большое препятствие состоит в том, что необходимо повторно соединить проводом разработчиков и мозги менеджеров так, чтобы они убежали от единственной линейной модели ответвления. Лучшая медицина для этого является дозой Linus Torvalds, говорящего Вам, Вы глупы и ужасны при использовании централизованного SCM. Хорошие инструменты визуализации истории помогли бы, но я еще не удовлетворен тем, что доступно.

Подвижный и CVS и работать хорошо на нас с разработчиками, использующими соединение Windows, Linux и Соляриса, и я не заметил проблем с часовыми поясами. (Действительно, это не слишком твердо; Вы просто используете секунды эпохи внутренне, и я ожидал бы, что все главные системы SCM разбираются в этом).

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

Наша кремниевая проектная группа выбрала Subversion. Они - главным образом восемь часовых поясов далеко от моего офиса, и даже по довольно хорошей выделенной линии между нашей офисной Подрывной деятельностью контроль является болезненным, но осуществимым. Большое преимущество централизованных систем состоит в том, что можно потенциально проверить большие двоичные файлы в нем (например, выпуски поставщика), не делая все распределенные репозитории огромными.

Мы используем мерзавца для работы с ядром Linux. Мерзавец более подошел бы для нас, как только собственная версия Windows зрела, но я думаю, что Подвижный дизайн так прост и изящен, что мы будем придерживаться его.

5
ответ дан Dickon Reed 10 April 2009 в 16:30
поделиться

Использование darcs 2.1.0 и его великое для моих проектов. Простой в использовании. Любите избирательно подходить к выбору изменений.

0
ответ дан mempko 10 April 2009 в 16:30
поделиться
  • 1
    I' m, не заставляя его работать. У меня есть файл Java (Client.java) и it' s в этой подпапке: net/client/Client.java файл банки находится в корневом каталоге. Это дает ошибки в; позади импорта. – Aidiakapi 11 February 2011 в 16:29

Использовали darcs на большом проекте (GHC) и для большого количества маленьких проектов. У меня есть отношения любви/ненависти с darcs.

Плюсы: невероятно легкий открыть репозиторий. Очень легкий переместиться переезжает между репозиториями. Очень легкий клонироваться и испытать 'ответвления' в отдельных репозиториях. Очень легкий сделать 'фиксации' в малочисленных когерентных группах, который имеет смысл. Очень легкий переименовать файлы и идентификаторы.

Минусы: никакое понятие истории---Вы не может восстановить 'положение дел 5 августа'. Я действительно никогда не выяснял, как использовать darcs для возвращения к более ранней версии.

Недопустимое: darcs не масштабируется. Я (и многие другие) вошел в большую проблему с GHC, использующим darcs. У меня был он, зависают с 100%-м использованием ЦП в течение 9 дней, пытаясь вытянуть в ценности 3 месяцев изменений. У меня был неудачный опыт прошлым летом, где я потерял две недели, пытаясь сделать функцию darcs и в конечном счете обратился к воспроизведению всех моих изменений вручную в нетронутый репозиторий.

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

3
ответ дан finnw 10 April 2009 в 16:30
поделиться
  • 1
    На самом деле я рекомендую фильтры. Но наоборот. Когда я работаю с logcat, я использую несколько фильтров: Один для моего приложения, один фильтр, который захватывает AndroidRuntime (Исключения выводятся там), и один для system.err и system.out. Обычно Вам нужны даже только первые два. System.err и редко используются (например, JSONObject выдает исключения к там). Позвольте основному журналу заполниться мусором. –  22 July 2011 в 10:18

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

1- Multi-site: если у вас есть удаленные группы, иногда вы не можете полагаться на интернет-соединение, или оно недостаточно быстрое и замедляет работу разработчиков. Тогда наличие независимого сервера, который может синхронизировать данные назад (Plastic дублирует ветви назад и вперед), очень полезно и ускоряет процесс. Вероятно, это один из наиболее распространенных сценариев для компаний, поскольку большинство из них по-прежнему обеспокоены «полностью распределенными» практиками, когда каждый разработчик имеет свой собственный реплицированный репозиторий.

2- Отключен (или действительно распределен, если вы предпочитаете): каждый разработчик имеет его собственный репозиторий, который копируется туда-сюда с его сверстниками или центральным местоположением. Это' Очень удобно идти к клиенту или просто идти домой со своим ноутбуком и по-прежнему иметь возможность переключать филиалы, оформлять заказы и проверять код, просматривать историю, запускать аннотации и т. д., не имея доступа к удаленному «центральному» сервер. Затем, когда вы возвращаетесь в офис, вы просто копируете свои изменения (обычно ветки) обратно несколькими щелчками мыши.

0
ответ дан 27 November 2019 в 04:40
поделиться

I use Git at work, together with one of my coworkers. The main repository is SVN, though. We often have to switch workstations and Git makes it very easy to just pull changes from a local repository on another machine. When we're working as a team on the same feature, merging our work is effortless.

The git-svn bridge is a little wonky, because when checking into SVN it rewrites all the commits to add its git-svn-id comment. This destroys the nice history of merges between my coworker's repo an mine. I predict that we wouldn't use a central repository at all if every teammember would be using Git.

You didn't say what os you develop on, but Git has the disadvantage that you have to use the command line to get all the features. Gitk is a nice gui for visualizing the merge history, but the merging itself has to be done manually. Git-Gui and the Visual Studio plugins are not that polished yet.

0
ответ дан 27 November 2019 в 04:40
поделиться

Я играю с Mercurial для моих домашних проектов. Пока что мне нравится это то, что я могу иметь несколько репозиториев. Если я возьму свой ноутбук в салон, у меня все равно будет контроль версий, в отличие от того, когда я запускал CVS дома. Разветвление так же просто, как рт.ст. клон и работа над клоном.

1
ответ дан 27 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

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