Как стать автором
Обновить

Комментарии 5

А зачем может понадобиться ломать линки?
В mercurial каждый файл из репозитория в простейшем случае представлен 1 файлом в каталоге .hg. При операции clone в пределах одной FS, поддерживающей hardlinks, создаются просто ссылки. Таким образом склонировав репоизторий с историей в 200Mb, занимаемое место на диске увеличится не на 200Mb, а только на размер рабочей копии.

При коммите в первый репозиторий (A), условно говоря, файла «foo», нужно добиться, чтобы это изменение не было отображено в репозитории B до тех пор, пока пользователь явно их не синхронизирует. Для этого соответствующий файл в ".hg" разлинковывается и вместо хардлинка далее будет использоваться вторая копия.
Вообще не очень понятно, ради чего такой CoW городили.
Не знаю о каких коровах шла речь, но если вы про хардлинки в hg… Например, удобно если на сервере развернуто несколько копий cms для различных сайтов, с одной стороны сохраняется возможность отследить и зафиксировать изменения под конкретный проект(если они вдруг затронули ядро), а с другой, не занимает кучу не бесплатного пространства.
CopyOnWrite, это достаточно тонкая в реализации штука и чреватая проблемами.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории