2009-02-14 2 views
22

Как управление версиями отличается от обычных резервных копий?Существует ли принципиальное различие между резервными копиями и контролем версий?

Давайте забудем об украшении объектов и сосредоточимся на душе контроля версий. Есть ли четкая строка, в которой должны выполняться резервные копии, прежде чем их можно будет назвать VCS? Или они, в глубине души, одно и то же с разными целевыми рынками?

Если существует принципиальная разница, какова абсолютная минимальная потребность в достижении статуса контроля версий?

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

ответ

27

Основная идея контроля версий - управлять несколькими версиями той же единицы информации. Идея резервного копирования - скопировать последнюю версию информации в безопасное место - более старые версии могут быть перезаписаны.

+0

Для меня, это звучит как определяющее фундаментальное различие. Я никогда не удалял резервные копии, поэтому я даже не думал об этом. Любые возражения от любого более сложного, чем я, за принятие этого ответа? – user64075

+0

Согласовано. На мой взгляд, это ключевой дифференциатор. – Karim

+0

Согласен, возможно, более фундаментальный, чем разветвление (но не много;) большой вопрос, кстати. – Ash

9

Возможность выполнения ветвления и слияния отделяет системы управления версиями от простых резервных копий. «Несколько одновременных юниверсов».

См. Также превосходное руководство version/source control Эрика Синка.

+0

Это действительно так? Без ветвления ничто не может назвать себя системой контроля версий, даже если она очень ограничена? – user64075

+0

Некоторые системы контроля версий, например, в вики и Google Docs, не поддерживают ветвление и слияние; в то время как это очень полезно, особенно в области разработки программного обеспечения, я не думаю, что это необходимая особенность VCS по определению. – Miles

+0

Ветвление и слияние можно получить при резервном копировании с копией, diff и подходящим соглашением об именах. –

1

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

1

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

+0

Резервное копирование может быть [инкрементным] (https://en.wikipedia.org/wiki/Incremental_backup) – kush

1

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

3

Вот несколько

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

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

контроля версий инициируется «записи» действия, где в качестве резервной копии, как правило, срабатывает временным интервалом.

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

0

Минимальное требование для системы резервного копирования, которая должна использоваться для управления версиями, - это инкрементное резервное копирование и восстановление для отдельных элементов резервного копирования. Дополнительные возможности (Collaboration, Branching, Diff Comparison) могут сделать его лучшей системой VCS, но поскольку вы можете управлять версиями, если вы можете иметь надежный доступ к извлечению и откату для поэтапно разных версий элемента, который вы создали, вы может использовать его как «VCS». Итак, я полагаю, что основное отличие системы резервного копирования и управления версиями заключается в том, что вы используете эту систему. В частности, учитывая, что вы можете, если хотите, использовать свой VCS в качестве вашей резервной системы.

2

На мой взгляд, здесь есть некоторые минимальные особенности VCS, которые не могут быть в базовой резервной копии:

  1. ВКС следует хранить более одной версии (где в качестве резервного копирования может хранить только последний последний заведомо исправный)

  2. 1. из-за каждый вариант должен быть идентифицирован каким-то образом (дата, тег, идентификатор версии)

  3. ВКС обычно может поддерживать более одного одновременного пользователя

  4. ВКС для исходного кода обычно имеют поддержку ветвление, слияние, добавление комментариев и просмотр дельт

1

Возможно, они в основном то же самое, пока вы не добавите слово «хорошо».

  • «хороший» VCS очень быстрый.
  • «хороший» VCS позволяет использовать несколько источников изменений (несколько пользователей).
  • «хороший» VCS позволяет слить.
  • «хорошо» VCS имеет метаданные, как предоставленного пользователем описание

  • «хорошие» резервные копии распределены географически

  • «хорошая» подпорка работать в автоматическом режиме.
1

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

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

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

Если вы посмотрите на распределенный VCS, вы можете найти более сильное понятие отслеживания ветвей, чем в нераспределенной VCS. То есть, может быть не одна ветвь head/trunk, а несколько в любой момент времени. Это то, что не удалось решить с помощью резервного решения.

3

Управление версиями является совместным, резервное копирование - всего лишь моментальный снимок.

Пример: с контролем версий два человека могут редактировать один и тот же файл одновременно, а система достаточно умна, чтобы объединить изменения вместе. С резервной копией, какая версия файла «выиграет?» Резервное копирование никогда не «объединяет» два разных резервных копии в одну «истинную» резервную копию.

4

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

0

Это абсолютно несвязанные вещи. Подумайте о контроле версий как о «машине времени», которую вы можете использовать, чтобы идти взад и вперед вовремя с вашим кодом.

+0

Я бы не сказал абсолютно несвязанный. Имея «Копию Thesis.doc» и «Копировать (2) Thesis.doc», на мой взгляд, несколько стирается. Поэтому, хотя они, возможно, не одно и то же, они, кажется, связаны глубоко. – user64075

7

Я вижу несколько принципиальных отличий между резервным копированием и управлением версиями:

  1. Резервными хранить только самую последнюю версию, или, даже если они хранят несколько версий, они не хранят каждый версии. ВКС делает магазин каждую версию,
  2. Это резервная версия часто устаревают, потому что резервное копирование не записывать все изменения, в то время как СУВ сделать,
  3. VCSS позволяют проводить несколько альтернативных версий одного и того же изменения на (разветвление).

Однако самым важным различием между операциями резервного копирования и VCS является то, что в VCS, изменения имеют смысл . В резервном копировании создается новая версия, потому что какой-то компьютер где-то решил, что с момента последней резервной копии было x часов; само изменение полностью бессмысленно. В VCS была выпущена новая версия, потому что человек решил, что эта версия имеет свою , что означает, ее личность, отличная от всех других версий. Таким образом, в резервной копии все версии равны (точнее: они одинаково бессмысленны), тогда как в VCS все версии являются особыми (они имеют свои собственные уникальные значения). В VCS изменения имеют фактическую историю , где одно событие привело к другому, в резервной копии есть только цепочка несвязанных событий.

Сложное отношение к этому, это понятие изменить метаданные. В VCS каждое изменение имеет автор, timestamp и, самое главное, сообщение о фиксации . Это сообщение фиксации записывает , почему изменение было сделано, другими словами, оно записывает «смысл», о котором я писал в предыдущем абзаце.

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

0

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

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

2

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

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