2011-06-06 3 views
2

Я хочу переместить файл tfs из одного места в другое на сервере.Team foundation Server api move files

Процесс будет:

Учитывая сервер и название проекта - рекурсивный вложенную в папку проекта и скопировать файлы в другую папку.

Я рассмотрел множество разных примеров, некоторые используют объект tfscollection, некоторые рабочие области и т. Д. И т. Д. Будучи новым для tfs api, я немного запутался.

Может кто-нибудь, пожалуйста, предоставит образец кода для этого (я использую vs 2010)?

код у меня до сих пор:

NetworkCredential tfsCredential = new NetworkCredential("username", "password"); 
tfsCredential.Domain = "dsi"; 

TfsConfigurationServer server = new TfsConfigurationServer(new Uri("http://tfs.domain.com:8080/tfs"), tfsCredential); 
server.Authenticate(); 
VersionControlServer vcserver = server.GetService(typeof(VersionControlServer)) as VersionControlServer; 

ответ

1

Вы должны использовать класс Workspace для данного вида работ. Если у вас есть существующее рабочее пространство, вы можете получить экземпляр Workspace из экземпляра VersionControlServer, который у вас уже был. Если нет, вам нужно создать новое временное рабочее пространство, а затем загрузить файлы, необходимые для внесения изменений во временное рабочее пространство, используя один из методов Get() класса Workspace.

Я не уверен, что вы хотите переместить или скопировать файлы. Чтобы переместить файлы, используйте один из методов PendRename() класса Workspace. Я не вижу рекурсивного флага для этого метода, поэтому вам, вероятно, придется выполнить рекурсию и PendRename() для файлов, которые вы хотите переместить. Это добавит файлы в список ожидающих изменений.

Чтобы скопировать файлы, сначала необходимо создать локальные копии файлов в рабочей области, а затем использовать один из методов PendAdd(), чтобы добавить новые файлы в список ожидающих изменений в рабочей области.

Наконец, вы можете получить список ожидающих изменений с помощью GetPendingChanges(), а затем выполнить проверку с помощью Checkin().

Все эти методы относятся к классу Workspace.

+0

Ну, я знаю, что я сказал, двигаться, но это не обязательно. Я хотел бы просто скопировать файлы из одной папки TFS в другую. Итак, вы говорите, что для копирования я должен сначала загрузить файлы локально, затем PendAdd() их в новые местоположения и проверить их? – Perplexed

+0

Да. Если вы не хотите разветвлять файлы, вы можете использовать VersionControlServer.CreateBranch для создания новой ветки с существующими файлами, но скопированные файлы не будут находиться в той же ветви, что и файлы копирования. –

+0

вы теряете историю копирования между проектами TFS, как это? Или только связь с Рабочими предметами? –