Может быть, вы можете использовать что-то вроде этого?
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()
Спасибо 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;
Но если кто-либо хочет, я рад дать им полный код. Делает хранимые процедуры проверки, находятся в синхронизации через систему. Эта единственная листовая схема изменяется для ручного управления в моей базе данных, которую я рад сделать.
Таким образом, я могу понять интуитивное обращение этого подхода, но я не думаю, что это - правильный способ пойти.
С одной стороны, это будет трудным. Но вторая проблема состоит в том, что TFS не имеет хорошего способа записать данные развертывания.
Для первого вопроса я не уверен, что это означает. Для второго вопроса можно использовать маркировки сборки и tf историю сегодня список измененных файлов.
Как альтернатива, Вы могли пересмотреть, как Вы хотите управлять изменениями SQL. Я использую не использующий высокие технологии метод хранения текущих незаконченных изменений в одном каталоге, и затем после развертывания перемещения файлов к другому каталогу. Этот метод может быть улучшен путем хранения таблицы истории развертывания в базе данных. Можно также хотеть изучить vsts дополнение DB, текущий CTP имеет много новых возможностей вокруг руководящих изменений базы данных. Я также слышу, что Красный Логический элемент имеет хорошие инструменты управления базой данных также.