Записывает ли файл git (в рабочем каталоге) атомарно? - PullRequest
1 голос
/ 07 апреля 2019

Являются ли операции git, такие как git reset, git checkout, атомарными на уровне файлов?Я пытаюсь определить, возможно ли, чтобы файл находился в частично записанном состоянии во время выполнения этих операций.Любые ссылки на авторитетные источники приветствуются.

1 Ответ

1 голос
/ 08 апреля 2019

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

Кроме того, подход «запись в сторону и переименование» не работает в Windows, что не позволяет переименовывать существующие файлы.

Git полагается на атомарность read и write, как указано в POSIX (например, множественные вызовы write не чередуются) в других местах, но TTBOMK такое поведение не требуется при проверке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...