Кто-то может объяснить источник (управление версиями) управление мне? [закрытый]

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

foo = lambda d: lambda : self.root.change_directory(d)
for d in directorys:
    self.command["cd " + d] = (foo(d))
14
задан Alex B 21 December 2008 в 07:36
поделиться

9 ответов

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

, Который является точно причиной управления версиями. Это действительно не был бы очень полезный инструмент, если бы все, что это сделало, было вслепую перезаписать код людей, не так ли? ;)

инструменты Управления исходным кодом поддерживают репозиторий со всей историей кодовой базы. В каждом изменении регистрируются как дельта, сохраняя , что изменилось . Это означает, что, если Вы и я и проверяем версию A, и я затем редактирую файл B, и Вы редактируете файл C, и мы регистрируемся, программное обеспечение управления исходным кодом сравнит различия и где никакие конфликты не существуют (как в этом случае), просто применяют оба изменения, и если конфликты происходят (если мы изменили те же строки кода), это отклоняет предпринятую регистрацию и говорит Вам, которые две версии файла имели конфликтующие изменения и просят, чтобы Вы объединили их вручную. (обычно это также может выделить изменения, таким образом, Вы видите визуально, что было изменено в каждой версии). Таким образом, это никогда не перезаписывает изменения.

Другие задачи это сделает для Вас:

  • Тег определенные версии или этапы, таким образом, можно легко найти их снова позже (это - версия, где мы наконец исправили раздражающую ошибку № 2524, это - бета 1, и так далее
  • Ответвление репозиторий в два, позволяя изменения, которые могут пойти "из синхронизации" временно или даже остаться отдельные продукты навсегда (думайте о PHP, одновременно поддерживающем их ответвление PHP4, также работая над PHP5. В какой-то момент они просто перешли своя кодовая база поэтому, в то время как они начали идентичный, они могут теперь применить патчи к одному, не влияя на другой). Конечно, это может также попытаться объединить эти ответвления назад вместе (можно создать ответвление для каждой основной функции в продукте, возможно, таким образом, они могут быть разработаны в изоляции, не будучи затронутым постепенными изменениями, происходящими с остальной частью кода, и затем когда функция сделана, объедините ее ответвление назад в основной репозиторий)

существует два основных вида инструментов управления исходным кодом, централизованных и распределенных. Распределенный большая новая вещь , в то время как централизовано был с нами в течение многих десятилетий. Короче говоря, централизованное управление версиями просто означает, что существует один сервер главного репозитория, где все ответвления и история изменений для каждого хранятся. Этот сервер ответственен за слияние checkins и все это. Так каждый приводить к таймауту разработчика проверяет код или передает его репозиторию, это - сервер, против которого он синхронизирует. Распределенные просто угробили "основной сервер" аспект этого. Вместо этого каждый раз, когда Вы проверяете свой код, Вы создаете новый репозиторий локально на Вашей собственной машине в пути, к которому Вы проверяете код. Затем можно работать против этого локального репозитория, который делает весь одинаковый вещи, отслеживая историю изменений, объединяя изменения и так далее, и после того как Вы готовы, можно объединить репозиторий в, ну, в общем, любой другой репозиторий. Как правило, Вы, вероятно, захотите объединить его в некоторый "основной" repo, где весь код склеен, но можно также объединить его в локальный repo codeveloper, если, возможно, ему нужна та функция, Вы продолжали работать, но это еще не достаточно стабильно для входа в основной repo. Таким образом, это дает Вам намного больше гибкости и позволяет Вам поддерживать историю изменений своей локальной работы, не рискуя повреждением сборки в главном репозитории (в централизованной установке, что происходит, если Вы регистрируетесь в чем-то, что не компилирует? Вся команда завинчена, пока она не фиксируется. И если Вы не делаете , регистрируют его, Вы теряете преимущества управления версиями, препятствуя тому, чтобы Вы возвращались к предыдущей версии, если Вы узнаете представление новых ошибок)

И, наконец, каков лучший/самый легкий пример этого типа программного обеспечения?

гм, самым популярным является легко SVN, который старомодная централизованная система, но это - что-то вроде боли для установки imo. Требует специального программного обеспечения на сервере. Я лично довольно люблю Базар , который распределяется, и репозиторий сервера только требует доступа FTP и ничего иного на сервере.

18
ответ дан 1 December 2019 в 06:43
поделиться

Системы управления версиями не только для многочисленных команд! У отдельного разработчика, работающего над проектом хобби, есть много для получения от управления версиями их кода.

Большинство систем управления версиями центрируется вокруг понятия репозиторий , которым управляет система и никогда не затрагивают непосредственно. Когда Вы хотите отредактировать файл, Вы копируете его с репозитория, вносите Ваши изменения, затем передаете его обратно. Система управления версиями определяет различия между Вашей новой версией и старой версией, затем хранит Вашу новую версию в репозитории. Но, в случае, если Вы завинтили, более старые версии, идя полностью назад в начало, всегда восстановимы.

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

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

5
ответ дан 1 December 2019 в 06:43
поделиться

Eric Sink записал хорошее ПРАКТИЧЕСКОЕ РУКОВОДСТВО Управления исходным кодом .

Правовая оговорка: Eric Sink является принципалом SourceGear, который разрабатывает и продает несколько связанных с управлением исходным кодом инструментов (включая Хранилище SourceGear). Однако ПРАКТИЧЕСКОЕ РУКОВОДСТВО Управления исходным кодом является довольно нейтральной, сбалансированной рецензией.

11
ответ дан 1 December 2019 в 06:43
поделиться

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

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

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

самый легкий пример к Подверсия загрузки на Вашу Карту памяти , и установите черепаха SVN также.

3
ответ дан 1 December 2019 в 06:43
поделиться

Все системы управления версиями являются в основном тем же.. Ни один не больше трудно использовать, чем другой.. svn commit somefile является столь же трудным как git commit somefile.. Они просто вся работа немного по-другому.

единственная причина я начал использовать мерзавца, из-за github. До этого единственная причина я использовал SVN по darcs (который имеет действительно хороший интерфейс командной строки), был то, потому что я нашел хороший, свободный сервер SVN.

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

Некоторые ресурсы можно найти полезным:

  • GitHub - что убедило меня начинать использовать мерзавца. Это имеет очень активное сообщество и очень полезно (при создании нового репозитория это дает Вам команды для продвижения кода к нему, например). У них есть польза руководства раздел также.
  • А, свободный , скринкаст об использовании GitHub - объясняет много функций сайтов и большинство полезных основ
  • Gitorious - другой хороший мерзавец, размещающий сайт, для проектов с открытым исходным кодом (сам сайт является открытым исходным кодом также). Не совсем столь же хороший использовать как GitHub я сказал бы, но очень хорошая альтернатива.
  • repo.or.cz - первый мерзавец, размещающий сайты. Довольно архаичный взгляд по сравнению с GitHub/Gitorious, но это работает, и размещает
  • эпизод Мерзавца PeepCode - 9$, но расценивается очень высоко. Покрытия в значительной степени все необходимо было бы знать.
  • GitCasts - серия хороших скринкастов. Запустите с первого ("Установка, Инициализация и Клонирующийся"), и это должно покрыть большинство полезных вещей.
  • GitMagic - чрезвычайно полезный, специально для немного более усовершенствованных вещей (Это ответило на большое количество из мой, "Как делают меня.." вопросы, как то, как создать пустое ответвление). Подробное руководство (идет от основного материала до внутренностей мерзавца)
  • Мерзавец для новичков: категорическое практическое руководство - вопрос на stackoverflow - не точно всесторонний все же, но это добирается там..

Однако это не важно, какую систему управления версиями Вы выбираете, действительно..

я нашел darcs действительно простой в использовании (и это - CLI, и понимающий, как darcs get работал для перемещения "патчей" между репозиториями. страница "GettingStarted" darcs.net wiki была обо всем, что я должен был начать. Единственная проблема, которую я имел, была, я не мог найти хосты к darcs проектам...

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

я начал изучать SVN, главным образом благодаря [1 116] "введение в скринкаст Подверсии" . Затем, когда я обнаружил GitHub, я использовал git svn для импорта моего основного репозитория SVN в мерзавца

Короче говоря: Найдите хорошее учебное руководство или ведите для некоторой системы управления версиями и версии все те случайные проекты и отрывки, которые Вы имеете. Это будет казаться немного бессмысленным, пока Вы случайно не внесете некоторое глупое изменение и сохраните/закроете Ваш сценарий или случайно удалите что-то.. Я в значительной степени использую VCS в качестве "суперотмены" (и для синхронизации кода между компьютерами)

5
ответ дан 1 December 2019 в 06:43
поделиться

Вот некоторые ответы на Ваши вопросы:

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

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

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

1
ответ дан 1 December 2019 в 06:43
поделиться

Ответ на второй вопрос Вы отправили:

SVN требует централизованного репозитория, в то время как Мерзавец децентрализован, но большинство людей, которых я знаю, кто использует его, полагается на GitHub. Также Мерзавец используется для основной соединительной линии исходного кода ядра Linux, таким образом, его оптимизировал немного больше для очень больших кодовых баз. Также у Мерзавца, кажется, есть лучший дескриптор на ответвлении, объединяющемся затем pre-svn 1.5.x код.

0
ответ дан 1 December 2019 в 06:43
поделиться

Также смотрите на Переданная потоком бумага Строк , она описывает много лучших практик и антишаблонов управления версиями, я был бы также второй ссылка на статьи Erik Sinks упомянутый Michael Burr

0
ответ дан 1 December 2019 в 06:43
поделиться

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

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

0
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

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