Отслеживание файлов без их удаления из вашей файловой системы И ДРУГИХ?
Я использовал 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 не дают на это хорошего ответа.)