Что такое Progam для распределенного программного обеспечения? WRT для GIT в качестве примера - PullRequest
0 голосов
/ 30 апреля 2018

Я новичок в GIT и пытаюсь понять основы, на которых он основан. Это привело меня к концепции распределенной программы.

Чтобы понять непрофессионала, я постараюсь сделать запрос простым, оставив в контексте следующее: - Распределенную портируемую в сети программу, например, GIT (Насколько я понимаю, GIT - это программа распространения, любезно исправьте, если в другом случае есть соответствующий пример)

Мое базовое понимание Распределенной Программы состоит в том, что она имеет как минимум два узла, REMOTE и LOCAL. Каждый узел имеет ту же родительскую копию, что и база. Incase из GIT копия имеет код.

Локальная копия - это то, что у меня есть на моем компьютере, а REMOTE находится где-то еще в Интернете на другом компьютере. Мои запросы основаны на этом понимании:

  1. Если я загружаю программный код в первый раз, он становится ОРИГИНАЛЬНОЙ копией, верно? Загружается ли этот код в GIT-репозиторий, который называется центральным репозиторием и находится в сети? Или это только метаданные КОДА и его ПРОИСХОЖДЕНИЯ (в данном случае мой ЛОКАЛЬНЫЙ узел), который сохраняется.
  2. Если кто-то в сети тянет эту ОРИГИНАЛЬНУЮ копию, он создаст УДАЛЕННУЮ копию, верно? Для этого ОРИГИНАЛЬНЫЙ компьютер должен быть подключен к Интернету в то время? Я говорю о деле для первого экземпляра.
  3. Если ответ на (2) - «да», это означает, что центральное хранилище хранит только METADATA OF EACH NODE и DIFF изменений в SOURCE для каждого изменения VERSION, правильно?
  4. И если 3 - «да», то это означает, что ЦЕНТРАЛЬНЫЙ Хранилище должно быть всегда онлайн, как и любой другой сервер.

Пожалуйста, поделитесь своими мыслями и помогите исправить вышеприведенное понимание.

Спасибо, Ананд

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

git - это инструмент управления распределенным управлением исходным кодом. Чтобы понять, что означает распространение в этом контексте, полезно сравнить его с нераспределенным, например. подрывная деятельность.

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

Напротив, у git - по крайней мере с технической точки зрения - нет центрального хранилища. Поэтому, когда вы извлекаете репозиторий в git, вы клонируете полную историю и фиксируете все в локальном репозитории. Затем вы можете извлекать и / или выдавать коммиты из и / или в другие репозитории, чтобы синхронизировать изменения и работать совместно.

Хотя часто бывает так, что у вас есть авторитетная ветвь в «центральном» репозитории (например, основная ветвь в общедоступном GitHub-репозитории вашего проекта), где желаемые изменения объединяются, это обычная практика, которая работает для многих проектов. Если у вас есть такой git-репозиторий, ваш «оригинальный» репозиторий (где вы инициализировали и добавили первый коммит) не обязательно должен быть подключен постоянно. С другой стороны, если GitHub выходит из строя, каждый узел может выступать в роли хаба, поскольку у него более или менее полная история проекта.

Примечание: если вы разветвляете свой код и фиксируете эти ветви, «оригинальный» код расходится и то же самое с удаленными репозиториями. Из-за этого GitHub и другие сервисы вызывают копирование репозитория.

Я рекомендую Pro Git Book для дальнейшего чтения по этой теме. И если у вас есть время, вы можете посмотреть Линуса Торвальдса на git .

0 голосов
/ 30 апреля 2018

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

  1. Загружена полная копия хранилища. (за исключением исключений, которые остаются локальными)
  2. Да, вам нужно как-то подключиться (это может быть интернет, интранет или просто съемное устройство)
  3. Нет. Центральный репозиторий содержит полную копию репозитория
  4. Нет, мне не обязательно быть всегда онлайн. Требуется только тогда, когда вы хотите нажать / потянуть. Несмотря на то, что центральное хранилище довольно распространено, 100% он-лайн.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...