Какой самый простой способ зафиксировать и отправить один файл, оставив другие модификации в покое?

Я относительно новичок в Mercurial, и моя команда сейчас пробует его в качестве замены для Subversion.

Как я могу зафиксировать и отправить один файл в другой репозиторий, оставив другие изменения в моем рабочем каталоге незафиксированными (или, по крайней мере, не перенесенные в другой репозиторий)?

Это происходит для нас с миграцией базы данных. Мы хотим передать миграцию в систему контроля версий, чтобы администратор БД мог просматривать и редактировать ее, пока мы работаем над модификациями кода, чтобы выполнить миграцию этой базы данных. Изменения еще не готовы, поэтому мы не хотим выталкивать их все.

В подрывной деятельности я бы просто сделал:

svn add my_migration.sql  
# commit only the migration, but not the other files I'm working on
svn commit -m "migration notes" my_mygration.sql

и продолжать работать на местном уровне.

Это не работает с Mercurial, как когда я выталкиваю его в другой репозиторий, если в нем есть изменения, которые я не выполнил, он хочет, чтобы я снес их, слил их и передал это слияние в хранилище. Коммиты после слияния не позволяют вам пропустить файлы, поэтому он заставляет вас фиксировать все в вашем локальном хранилище.

Самая простая вещь, которую я могу выяснить, - это зафиксировать файл в моем локальном репозитории, клонировать мой локальный репозиторий, извлечь любые новые изменения из реального репозитория, объединить их и зафиксировать это объединение, и они вытолкнут мои изменения.

hg add my_migration.sql 
hg commit -m "migration notes" my_migration.sql 
cd ..
hg clone project project-clone
cd project-clone
hg fetch http://hg/project
hg push  http://hg/project

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

Ответы на вопрос(6)

Ваш ответ на вопрос