Частичный мэппинг в MSR Tools

Наиболее часто возникающая ошибка мэппинга MSR Tools заключается в попытке найти файл, который ранее в мэппинг не вошёл. Для решения этой проблемы в следующей версии MSR Tools появится так называемый частичный мэппинг.

Например в настройках мэппинга мы указали, что нас интересуют только файлы с расширениями «.c» и «.h». Если в очередной ревизии происходит переименование или копирование из файла с расширением «.in» в файл с расширением «.c», то возникает ошибка. Предусмотреть все подобные случаи невозможно, да и осуществлять мэппинг всех файлов с нужным расширением часто нежелательно. Предположим мы выполняем мэппинг ревизии 100 и получаем сообщение об ошибке вроде этого: «Could not find file /trunk/src/test1.c.in in revision 99.» Раньше единственные способом решения этой проблемы было включение файлов с расширением «.in» в мэппинг и возобновление мэппинга с той ревизии, когда соответствующий файл появился впервые. Теперь при появлении такой ошибки можно выполнить следующую команду:

MSR.Tools.Mapper CONFIGFILE pmap -r 50 -p /trunk/src/test1.c.in

Здесь предполагается, что файл /trunk/src/test1.c.in впервые появился в ревизии 50. В результате выполнения этой команды в базу данных добавятся данные по нужному нам файлу как-будто он изначально попал в мэппинг. После этого можно без проблем выполнить мэппинг ревизии 100, если конечно не обнаружатся ещё ошибки.

MSR.Tools.Mapper CONFIGFILE map -r 100

Также сразу после этого желательно выполнить частичный мэппинг для последней ревизии, дабы не оставлять «хвост» в виде неудалённого файла /trunk/src/test1.c.in если в ревизии 100 он был переименован.

MSR.Tools.Mapper CONFIGFILE pmap -r 100 -p /trunk/src/test1.c.in

Далее можно продолжить мэппинг как ни в чём не бывало.

Также частичный мэппинг может пригодится для мэппинга целых каталогов, которые ранее были проигнорированы. Особенно это актуально для репозиториев SubVersion. Для них разумно не выполнять мэппинг тэгов, а иногда и веток. Они получаются копированием содержимого ствола или других веток и их мэппинг может отнять очень много времени. Однако, если вдруг случается копирование или слияние из тэга в ветку или даже ствол (бывает и такое), то можно «подтянуть» нужную ветку с помощью частичного мэппинга.

MSR.Tools.Mapper CONFIGFILE pmap -r 50 -d /tags/version-1.0

Опять таки предполагается, что интересующий нас тэг появился в ревизии 50.