2014-01-16 3 views
0

Я работаю над проектом, расширяющим функциональность TFS для моего отдела. В основном у нас есть два хранилища (коллективные коллекционные проекты), один для разработки и производственный. Разработка одна используется нашими разработчиками, а производство - это то, где мы хотим сохранить копию нашего кода. Я сделал несколько исследований, и казалось, что это часто спрашивали, никогда не доставляли запросы, поэтому я решил написать приложение на заказ.TFS API - проверка всех файлов независимо от состояния

В моем приложении код не делает (среди прочего) следующие

  • Проверки там нет извлечений в репозитории разработки для элемента в вопросе
  • Имеет ли попасть в каталог на клиентском компьютере , не создавая или не полагаясь на существующие сопоставления Workspace
  • Создает временное сопоставление рабочей области в репозитории Production, связанном с созданным ранее локальным каталогом
  • Ищет ожидающие изменения между локальным каталогом и проверяется в коде в производстве
  • Проверки в изменениях

Теперь все работает отлично - во всяком случае в первый раз, так как все файлы будут помечены как добавить и, следовательно, проверяется успешно. В последующие моменты, однако, он не работает так, как я хочу, потому что он только находит файлы, которые были изменены. Я понимаю, что это по дизайну, но то, что я хочу сделать, это установить исходные коды кода - каждая базовая линия (changeet), содержащая все файлы в проекте, независимо от того, были ли они изменены или нет. Если, например, в проекте было 52 файла, тогда, когда я нажимаю «Получить эту версию», я ожидаю, что будет загружено 52 файла.

Я понимаю, что TFS работает в соответствии с проектом, но мне интересно, есть ли способ заставить меня делать то, что я хочу. Для справки мой код для проверки в следующим образом:

// create a workspace on my production server 
wSpace = vcsProdServer.CreateWorkspace(cWsMapping); 
wSpace.Map(pProjectName, combinedPath); 
wSpace.Get(); 

string files = pProjectName + "/*"; 
int pendingAdd = wSpace.PendAdd(files, true); 
int pendingEdit = wSpace.PendEdit(files, RecursionType.Full); 

// get the pending changes 
PendingChange[] changes = wSpace.GetPendingChanges(); 

// check in the changes 
wSpace.CheckIn(changes, string.Format(checkinMessage, pProjectName, DateTime.Now)); 

pProjectName относится к проекту в TFS ($/MyProject, например) и combinedPath является локальный путь, где последняя версия кода загружается.

ответ

0

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

Обновленного код рабочей области:

// create a workspace on my production server 
try 
{ 
    wSpace = vcsProdServer.GetWorkspace(cWsMapping, vcsProdServer.AuthorizedUser); 
} 
catch 
{ 
    wSpace = vcsProdServer.CreateWorkspace(cWsMapping); 
    wSpace.Map(pProjectName, combinedPath); 
} 
wSpace.Get(); 

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

Смежные вопросы