Отслеживание файлов без их удаления из вашей файловой системы И ДРУГИХ?

Я использовал hg forget <files> отследить некоторые файлы без их удаления из моей файловой системы, как с помощью hg rm <files> делает. Я совершил изменения и работает hg status перечислил эти файлы как неотслеживаемые ? <files> как и ожидалось. Затем я отправил набор изменений в наш удаленный репозиторий, кто-то другой вытащил и обновил, а Mercurial удалил эти файлы из своей файловой системы!

Почему Mercurial не распознает эти файлы как неотслеживаемые hg forget в чьей-либо копии хранилища так же, как в копии произошли изменения?

Является ли их еще одним способом отследить файлы без их удаления из чьей-либо файловой системы?

1 ответ

Решение

И у Git, и у Mercurial одна и та же проблема: у вас есть некоторый коммит O (старый), в котором есть файл F. Теперь вы обновляете с O до нового коммита N, в котором говорится "нет файла F".

Что должна делать система контроля версий? Ну, это зависит от того, почему F был удален, не так ли? Если мы удалили F, потому что он использовался раньше, но теперь бесполезен, он должен быть удален.

Итак, почему удаление no-longer-used правильно, но сохраняя accidentally-committed тоже правильно? И как VCS должна знать, что из этих двух подразумевается, учитывая, что все, что она может видеть, это то, что коммит O имеет оба no-longer-used а также accidentally-committed, в то время как commit N не имеет ни одного файла?

(Насколько я знаю, ни Git, ни Mercurial не дают на это хорошего ответа.)

Другие вопросы по тегам