Mercurial и xcuserdata, .ds_store и .git - PullRequest
       23

Mercurial и xcuserdata, .ds_store и .git

5 голосов
/ 15 ноября 2011

Ртутный нуб здесь.У меня много проблем с работой с Mercurial и такими файлами, как xcuserdata, .ds_store и .git.Я в своем уме.

Текущая установка имеет центральное репо, которое действует как посредник.Мы выдвигаем и извлекаем изменения.

Коммиты были переданы ранее, включая нежелательные файлы (xcuserdata, git, ds_store), до того как был создан файл .hgignore.Это вызвало ночные кошмары.

То, что я пробовал:

Я пытался игнорировать проблему и позволил слиянию справиться с ней, но это вызывает ответвления в центральном репо каждый толчок из-за конфликтов (конфликты на толчкене отображается в терминале, поэтому у меня нет возможности слиться при нажатии) и повреждает файл проекта до такой степени, что это приводит к зависанию инструментов слияния, таких как filemerge и kdiff3.

Я попытался сделать локальныйФайл .hgignore и использование hg забудь о xcuserdata, чтобы прекратить отслеживать эти вещи, но он по-прежнему выталкивает и извлекает эти нежелательные файлы.

Что я хочу, чтобы произошло:

Я хочу удалить центральное хранилищеэти нежелательные файлы.Каждый разработчик должен иметь собственную локальную версию этих файлов.Новые коммиты будут игнорировать эти файлы.Как бы я это сделал?

Спасибо

1 Ответ

4 голосов
/ 15 ноября 2011

Просто hg forget файлы, которые вы хотите удалить, и отправьте их на сервер. В следующий раз, когда остальная часть команды извлечет из хранилища, файлы также будут забыты на их стороне.

Помните, что forget работает только для текущей ветви, если у вас есть другие ветви, вы должны сделать это на каждой из них.

Чтобы автоматически забыть все файлы, содержащиеся в .hgignore, вы можете сделать

hg forget "set:hgignore()"

Убедитесь, что каждая часть вашей команды осведомлена о вашем решении относительно этих файлов, в противном случае возможно, что они снова добавят файл тезисов в будущем. Коммуникация - вот ключ!

К вашему сведению, .hgignore не влияет на файл уже в хранилище, он влияет только на файл, который не добавлен.

В противном случае, если вы действительно хотите полностью удалить файл из истории, вы можете использовать расширение MQ, но это другая история, и это гораздо более сложное и бесполезное ИМХО.

...