2010-09-01 2 views
2

Mercurial новичок здесь, я работаю над проектом Django, который использует Sqlite в качестве базы данных. Я разрабатываю шаблоны & UI, пока мой коллега работает над внутренним кодом. Мы оба вносим изменения в битбакет.Как всегда использовать «удаленную» версию файла в mercurial?

Он единственный, кто на самом деле модифицирует модели и, соответственно, файл SQLite, однако только в силу моего тестирования приложение также изменило файл. Я всегда отказываюсь от своих изменений, выполняя «hg revert database.sqlite» после того, как закончил тестирование и прежде чем нажать.

Есть ли простой способ для меня всегда придерживаться его версии SQLite-файла, так что у нас нет проблем с объединением каждый раз, когда мы пытаемся синхронизировать? Сортировка, как исключение, которое гласит: «если есть конфликт, всегда используйте удаленную версию файла». Я видел что-то подобное в подсказке где-то, но я не могу, чтобы жизнь меня снова находила.

+0

Возможный дубликат [Mercurial: как игнорировать изменения в отслеживаемом файле] (http://stackoverflow.com/questions/2856571/mercurial-how-to-ignore-changes-to-a-tracked-file) – sth

+5

В идеале, двоичный файл SQLite не будет вообще находиться в репозитории. Это то, что вы можете инициализировать из SQL-скрипта, который я бы рассматривал в качестве исходного кода. –

ответ

1

До тех пор, пока вы работаете над оболочкой, существует множество способов выполнения hg revert database.sqlite, выполненных до совершения.

с bash:

alias hgcommit = hg revert database.sqlite;hg commit 

(это немного дешево, я знаю, но вот почему я люблю работать с оболочкой)

2

Я согласен с комментарием Матфей, ​​что наилучшим решением будет не отслеживать этот файл.

Однако, ваша идея просить Mercurial всегда использовать удаленную версию на самом деле не так уж и далеко ... :-) Вы делаете это с помощью configuring a merge tool для этого файла, где вы указываете Mercurial для использования другой (удаленной) версии в все сливается:

[merge-tools] 
database.sqlite = internal:other 

Это должно убедиться, что вы всегда будете отменить изменения в database.sqlite при слиянии. Это позволяет сделать

$ hg pull 
$ hg merge 

Я только что получил еще одну идею - использовать предварительно слияния крюк, чтобы восстановить файл:

[hooks] 
pre-merge = hg revert mydb.sqlite 

То есть в значительной степени эквивалентно использованию инструмента internal:other слияния сверху, но вы можете найти это концептуально проще, поскольку он моделирует то, что вы уже делаете.

Смежные вопросы