Что является практическим примером использования hg copy file file2 с использованием Mercurial? - PullRequest
4 голосов
/ 16 октября 2010

Mercurial имеет

hg copy file file2
Команда

и изменение могут распространяться на изменение при первом слиянии. В книге O'Reilly Mercurial говорится, что Mercurial является единственной системой контроля версий, которая делает это.

Какая практическая польза от этого? В книге упоминается создание копии файла и исправление ошибок, поэтому исправление ошибки может распространяться обратно на исходный файл, но с контролем версий мы обычно не редактируем файл напрямую, и если исправление ошибки работает, то напрямую зафиксировать этот файл? Или даже если по какой-то причине нам нужно сделать копию, мы можем cp file file2, протестировать исправление и mv file2 file, чтобы переместить этот файл обратно в исходный файл и зафиксировать файл. Что является хорошим примером использования функции hg copy?

Ответы [ 3 ]

2 голосов
/ 16 октября 2010

Вот один пример, который я использовал лично.Программный пакет со сложными файлами конфигурации иногда предоставляет примеры с именами, такими как universe-wsgi.ini.sample (привет, galaxy), и в процессе установки вы должны скопировать файл .ini.sample в файл .ini.Если вы сделаете это с помощью:

hg copy universe-wsgi.ini.sample universe-wsgi.ini

, то при каждом обновлении программного обеспечения с помощью hg pull ; hg update новые параметры, доступные в образце, будут добавляться с настройками по умолчанию к вашей настроенной версии.

0 голосов
/ 05 июня 2012

Я видел много путаницы в этой теме, и по общему признанию я был слишком поначалу. Насколько я понимаю, вариант использования этого следующий.

Если вы делаете копию файла, и кто-то еще может работать над одним и тем же файлом в одно и то же время или расходиться / разветвляться в упрощенном или фактическом направлении от момента времени, который перекрывается с наборами изменений, этот файл будучи скопированным и, возможно, измененным, это кандидат на hg copy.

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

То, для чего он не используется, это:

  • Периодически синхронизируемые и обновляемые файлы, скопированные из оригинала

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

Моя ссылка: http://hgbook.red -bean.com / read / mercurial-in-daily-use.html

0 голосов
/ 16 октября 2010

Допустим, у вас есть базовый класс в файле. Вы хотите создать производный класс, чтобы сделать hg copy и настроить производный класс, удалив некоторые методы и внеся изменения в другие. Теперь ваш коллега в другой ветке исправил ошибку в базовом классе. Когда вы делаете слияние, это исправление ошибки будет объединено с вашим производным классом, а также с вашим базовым классом.

...