Programatically находят изменения TFS с тех пор в последний раз хорошая сборка

Может быть, вы можете использовать что-то вроде этого?

class Point():
    def __init__(self, pen, points=points):
        self.x = pen.xcor()
        self.y = pen.ycor()
        for point in points:
            if point == (self.x, self.y, pen):
                return
        points.append((self.x, self.y, pen))
        self.pen = pen
        self.get()
7
задан mjallday 21 October 2008 в 04:58
поделиться

2 ответа

Спасибо Scott,

Через некоторое время я нашел хороший способ управлять этим.

В основном я создал задачу, которая добирается, текущий changesets, связанный со сборкой (укажите, что 1 из моего вопроса не является проблема), и затем цикл через них ищущий .sql файлы. После того как у меня есть список тех, я могу создать сценарий изменения или выполнить их против целевой базы данных.

Код выглядит примерно так:

TeamFoundationServer tfs = new TeamFoundationServer(TfsServerUrl);
VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

var buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));


IBuildDetail build = buildServer.GetBuild(
    new Uri(BuildUri)
    , null
    , QueryOptions.All
);

build.RefreshAllDetails();

var changesets = InformationNodeConverters.GetAssociatedChangesets(build);

foreach (var changesetSummary in changesets)
{
    Changeset changeSet = vcs.GetChangeset(changesetSummary.ChangesetId);

    sqlFilePaths.AddRange(
        ProcessChangeSet(changeSet)
    );

}

и код в ProcessChangeSet похож

List<string> sqlFilePaths = new List<string>();
foreach (Change change in changeSet.Changes)
{

    if ((change.Item.ItemType == ItemType.File)
        && (change.Item.ServerItem.EndsWith(".sql", StringComparison.OrdinalIgnoreCase))
        )
    {
        sqlFilePaths.Add(
            sqlPath
        );

    }
}
return sqlFilePathes;

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

9
ответ дан 7 December 2019 в 03:22
поделиться

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

С одной стороны, это будет трудным. Но вторая проблема состоит в том, что TFS не имеет хорошего способа записать данные развертывания.

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

Как альтернатива, Вы могли пересмотреть, как Вы хотите управлять изменениями SQL. Я использую не использующий высокие технологии метод хранения текущих незаконченных изменений в одном каталоге, и затем после развертывания перемещения файлов к другому каталогу. Этот метод может быть улучшен путем хранения таблицы истории развертывания в базе данных. Можно также хотеть изучить vsts дополнение DB, текущий CTP имеет много новых возможностей вокруг руководящих изменений базы данных. Я также слышу, что Красный Логический элемент имеет хорошие инструменты управления базой данных также.

0
ответ дан 7 December 2019 в 03:22
поделиться
Другие вопросы по тегам:

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