Как получить список Changesets (или объекты работы), в которых зарегистрировались между сборками?

Мне нужен список changesets (или Объекты Работы), которые были сделаны сборками betweend (я могу маркировать сборки если его необходимое). Мне нужен тот список для нашей тестовой команды (и опубликовать 'changelist').

Задача MSBuild, которая в состоянии получить тот список и сохранить как файл (затем, я могу обработать тот список далее.
Или возможно я должен соединиться с TFS от C#, кодируют и получают тот список сам (я знаком с получением WorkItems в C#).

12
задан Shayki Abramczyk 22 April 2019 в 07:53
поделиться

3 ответа

TFS автоматически создаст список всех наборов изменений и соответствующие рабочие элементы, проведенные между двумя успешными сборками. Вы найдете списки в конце отчета по сборке.

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

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

2
ответ дан 2 December 2019 в 19:31
поделиться

Есть довольно аккуратный образец из Python Cookbook здесь - самая быстрая версия, предложенная на этом URL:

import itertools
def erat2( ):
    D = {  }
    yield 2
    for q in itertools.islice(itertools.count(3), 0, None, 2):
        p = D.pop(q, None)
        if p is None:
            D[q*q] = q
            yield q
        else:
            x = p + q
            while x in D or not (x&1):
                x += p
            D[x] = p

, чтобы дать

def get_primes_erat(n):
  return list(itertools.takewhile(lambda p: p<n, erat2()))

Измерение в командной строке (как я предпочитаю делать) с этим кодом в pri.py, я наблюдаю:

$ python2.5 -mtimeit -s'import pri' 'pri.get_primes(1000000)'
10 loops, best of 3: 1.69 sec per loop
$ python2.5 -mtimeit -s'import pri' 'pri.get_primes_erat(1000000)'
10 loops, best of 3: 673 msec per loop

так что похоже, что решение Cookbook более чем в два раза быстрее.

-121--529517-

проверьте это http://www.4guysfromrolla.com/articles/012506-1.aspx

Короче говоря, (1) существует свойство «SubmitDisabledControls» формы или (2) подправить предоставленный автором javascript

-121--3603998-

Мы делаем нечто подобное в нашем процессе построения TFS. Для этого в C # была создана пользовательская задача MSBuild, которая выполняет вызов TFS для предметов. Создать пользовательские задачи довольно просто.

Вот статья, в которой вы начинаете писать задания MSBuild. http://msdn.microsoft.com/en-us/library/t9883dzc.aspx

Я предполагаю, что вы уже знаете, как выполнять вызовы в TFS на основании вашего вопроса.

0
ответ дан 2 December 2019 в 19:31
поделиться

Возможно, это сообщение в блоге именно то, что вы ищете. Вы в основном просматриваете все ссылки, находя те, у которых Uri содержит «набор изменений». Похоже, для этого нет специального свойства.

http://blogs.msdn.com/b/buckh/archive/2006/08/12/artifact-uri-to-changeset.aspx

(скопировано из блога в случае гниения)

using System;
using System.Collections.Generic;

using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
using Microsoft.TeamFoundation;
using Microsoft.TeamFoundation.VersionControl.Client;

class ChangesetsFromWorkItems
{
    static void Main(string[] args)
    {
        if (args.Length < 2)
        {
            Console.Error.Write("Usage: ChangesetsFromWorkItems <server> <workitemid> [workitemid...]");
            Environment.Exit(1);
        }

        TeamFoundationServer server = TeamFoundationServerFactory.GetServer(args[0]);
        WorkItemStore wiStore = (WorkItemStore)server.GetService(typeof(WorkItemStore));
        VersionControlServer vcs = (VersionControlServer) server.GetService(typeof(VersionControlServer));

        int workItemId;
        for (int i = 1; i < args.Length; i++)
        {
            if (!int.TryParse(args[i], out workItemId))
            {
                Console.Error.WriteLine("ignoring unparseable argument {0}", args[i]);
                continue;
            }

            WorkItem workItem = wiStore.GetWorkItem(workItemId);
            List<Changeset> associatedChangesets = new List<Changeset>();
            foreach (Link link in workItem.Links)
            {
                ExternalLink extLink = link as ExternalLink;
                if (extLink != null)
                {
                    ArtifactId artifact = LinkingUtilities.DecodeUri(extLink.LinkedArtifactUri);
                    if (String.Equals(artifact.ArtifactType, "Changeset", StringComparison.Ordinal))
                    {
                        // Convert the artifact URI to Changeset object.
                        associatedChangesets.Add(vcs.ArtifactProvider.GetChangeset(new Uri(extLink.LinkedArtifactUri);
                    }
                }
            }

            // Do something with the changesets.  Changes property is an array, each Change
            // has an Item object, each Item object has a path, download method, etc.
        }
    }
}
1
ответ дан 2 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: