2010-11-16 1 views
0

Сначала вопрос, затем некоторый фон.Как интерпретировать информацию о слиянии в выходном файле журнала TFS (или: как узнать, какие изменения являются частью сборки?)

Мы используем Visual Studio 2008, C# 3.0 и .NET 3.5 и TFS 2008 как наш VCS.

Если я выполнить эту команду против нашей базы данных TFS, чтобы показать информацию о слиянии фиксация:

 
tf changeset 13469 /noprompt 

я получаю выход, как это (отредактированный):

 
Changeset: 13469 
User: Lasse 
Date: 12. november 2010 14:06:06 

Comment: 
    Some text here. 

Items: 
    merge, edit $/path/to/target/filename.txt 
    ... more merged files 

... some blurb about reviewer texts, etc. nothing important/useful here 

Это слито из другой путь в той же базе данных, но эта информация недоступна здесь.

Например, если я слился с $/path/to/main/ до $/path/to/branch/, путь к основному проекту недоступен в сменном наборе изменений. (обратите внимание, пожалуйста, не говорите, что я сливаю неправильный путь, в данном случае это не имеет значения, поэтому я просто сделал это просто.)

Итак, вопрос в том, есть ли способ: Я могу узнать, с чего сменился набор изменений? Из какой ветви это произошло? ... и, какие ревизии она возникла как в этой отрасли (например, 13468? 13462? 13453? ...)


фон

Мы не использовали много ветвления и слияния так далеко, за исключением простых вещей, таких как «маркировка» релиза.

Отныне мы рассматриваем возможность использования ветвления гораздо более активно, но это создает проблему.

Скажем, я открываю наш трекер ошибок, беру верхнюю ошибку, исправляет ее и проверяет. Это делается в одной ветви, допустим, это главная ветвь.

Теперь, в какой-то момент, тестировщик проверяет, исправлена ​​ли ошибка исправления, поэтому он открывает наш продукт и хочет проверить, прежде чем он начнет, что исправление действительно перешло в эта сборка.

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

Таким образом, тестер может просто взглянуть на корпус, номер версии и легко вывести, если сборка имела этот набор изменений или нет. Если номер набора изменений в номере версии был равен или больше, чем номер в этом случае, набор изменений был частью этой сборки.

С ветками это не работает. Если я фиксирую набор изменений X на главной ветке, но забываю слить, тестер не может просто сказать «Если я запустил версию X или выше, я пойду это исправление».

Обратите внимание, что мы не используем рабочие элементы TFS, поэтому нет простого встроенного способа связывания фиксаций и случаев.

Причина, по которой я спросил о выходе истории TFS, состояла в том, что я предполагаю, что если я увижу, что набор изменений 13469 действительно пришел из другой ветви и соответствует списку изменений 13462, а программист отметил 13462 в этом случае, я могу «13462 теперь является частью сборки, потому что она была объединена с правой ветвью, стала 13469, а выход сборки имеет версию 13470».

Другими словами, я мог бы создать инструмент, который как часть сборки рассмотрел историю базы данных и захватил всю необходимую информацию и сохранил ее в базе данных, чтобы я мог принимать дела на наших готовых -test list и сравнить с номером версии исполняемого файла, который тестировал тестер, и просто перечислить все случаи, которые готовы к тестированию и часть этой сборки.

Итак, мой вопрос действительно в этом: есть ли какие-либо намеки на то, как мы можем это решить? Возможно, мы пронзительны, и нам нужно сказать правильный путь, чтобы сделать это, поэтому, если у вас есть хорошие идеи, дайте мне знать.

+0

Программист, выполняющий слияние, отмечает также набор изменений слияния на корпусе. Это было лучшее, что мы могли бы придумать. –

ответ

0

Я слышу и чувствую ваш плач здесь, поскольку мы сталкиваемся с тем же ограничением. С TFS 2008 нет простого способа увидеть эту историю. С TFS 2010 и визуализатором ветки это становится проще.

Если вам это действительно нужно, вы можете написать его самостоятельно, используя TFS API. Вам нужно будет пройти свой путь через различные изменения для файлов. Было бы относительно просто код:

  • Получить объединить набор изменений
  • получить предварительное слияние набора изменений
  • определить источник слияния с первой ревизией
  • Получить историю файла между датами двух ревизиями.

Я делал это вручную раньше, но вы можете сделать это в коде C# или, альтернативно, написать сценарий PowerShell для этого.