2012-01-26 2 views
1

Я начал обновлять свои слои до Roll Up 7, пока мы еще разрабатывали в другой среде с включенным TFS. Мы говорили о версии 1850, и к тому времени, когда я закончил, мы были в 1900 году. Таким образом, цель состоит в том, чтобы объединить 50 различных проверок в завершенную среду RU7. Каждая регистрация может содержать много разных объектов, и каждый объект хранится в TFS как XPO где-то.Как скопировать файлы XPO из управления версиями ... частичный код работает, причудливая проблема

Мой код составляет 90% от пути, но проблема возникает при копировании файлов из временного каталога. Когда я смотрю в каталоге temp, файлов там нет, но каким-то образом они могут быть доступны.

static void Job33(Args _args) 
{ 
    #File 
    SysVersionControlSystem sysVersionControlSystem = versioncontrol.parmSysVersionControlSystem(); 
    SysVersionControlTmpItem contents; 
    SysVersionControlTmpChange change; 
    SysVersionControlTmpChange changes; 
    int i; 
    SysVersionControlTmpItem contentsAddition; 
    SysVersionControlTmpItem contentsItem; 
    str       writePath; 
    Set  permissionSet = new Set(Types::Class); 
    str       fileName; 
    int       n; 
    ; 

    change = versioncontrol.getChangesHistory(); 

    // BP deviation documented 
    changes.setTmp(); 
    changes.checkRecord(false); 
    changes.setTmpData(change); 

    while select changes 
     order by changes.ChangeNumber asc 
     where changes.ChangeNumber > 1850 
    { 
     writePath = @'C:\TEMP\' + int2str(changes.ChangeNumber) + @'\'; 

     contentsAddition = versioncontrol.getChangeNumberContents(changes.ChangeNumber); 

     n = 0; 
     while select contentsAddition 
     { 
      // HOW DOES THIS LINE ACCESS THE FILE BUT MY METHOD CAN NOT?? 
      contentsAddition.viewFile(); 
      //????????????? 


      // Write to appropriate directory 
      if(!WinAPI::pathExists(writePath)) 
       WinAPI::createDirectory(writePath); 

      n++; 

      fileName = int2str(changes.ChangeNumber) + '_' + int2str(n) + '.xpo'; 

      if (WinAPI::fileExists(contentsAddition.fileName(), false)) 
      { 
       // Write to appropriate directory 
       if(!WinAPI::pathExists(writePath)) 
        WinAPI::createDirectory(writePath); 

       WinAPI::copyFile(contentsAddition.fileName(), writePath + fileName, true); 
       info(strfmt("|%1|%2|", contentsAddition.fileName(), writePath + fileName)); 
      } 
     } 

     info(strfmt("%1", changes.ChangeNumber)); 
    } 
} 
+0

Разве это не опасно? Что делать, если вы перезаписываете изменение/исправить из roll up 7? – AnthonyBlake

+0

У нас была наша среда RU1, которую мы обновляли до версии RU7. Мы включили контроль версий, а затем я начал обновление до RU7 в статической среде, в то время как разработчики написали код в среде RU1 с VC. Я закончил 2 недели спустя, и теперь я экспортирую все модификации кода в среде RU1, чтобы объединиться в среду RU7, если это имеет смысл. Таким образом, нам не нужно замораживать код во время обновления :) –

ответ

1

Похоронен в классах \ SysVersionControlFilebasedBackEndTfs есть сборки .NET, который используется. Я смог использовать это, чтобы извлечь то, что мне нужно было смешать с верхним кодом. После того, как я использовал это ... мой код сверху начал работать довольно странно?

Каким-то образом в папке, которую я скопировал, произошла блокировка файла, которая просто не позволила бы мне удалить ее, пока я не закрыл AX ... неважно, но предполагает, что существует метод tfsProxy.close() или что-то, что я должен был назвать.

Microsoft.Dynamics.Morphx.TeamFoundationServer.Proxy tfsProxy = new Microsoft.Dynamics.Morphx.TeamFoundationServer.Proxy(); 
; 

tfsProxy.DownloadFile(contentsAddition.InternalFilename, changes.ChangeNumber, writePath + fileName); 
0

Итак, вы пытаетесь просто получить объекты, которые были изменены, чтобы вы могли импортировать их в новую среду RU7? Почему бы не сделать это прямо в Visual Studio? Вы можете вытащить XPO оттуда на основе истории изменений с момента запуска обновления RU7.

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

+0

У меня нет доступа к VS. Некоторые странные правила SOX у нас есть. Я думаю, что просто наткнулся на ваш блог о DAXMusings о TFS. Похоже на интересную концепцию, которую я, вероятно, должен изучить, особенно в 2012 году. Мой код был просто быстрым и грязным, чтобы сбрасывать XPO. То, что вы предлагаете, выглядит как более продвинутая концепция, которая имеет смысл повторять этот проект. Я обязательно посмотрю на это. –

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

  • Нет связанных вопросов^_^