Я правильно понял синтаксис?
tf get .\Web\project.root /recursive
All files are up to date.
tf get /version:T .\Web\project.root /recursive
All files are up to date.
Получение последней версии с помощью командной строки сообщит, что все файлы обновлены, когда это не так! Однако, когда я использую TFS UI в Visual Studio, последний код действительно загружается.
Пока это не разрешится, мой супер-причудливый скрипт msbuild нельзя использовать без открытия Visual Studio, чтобы сначала получить последнюю версию !!
<Target Name="GetLatestCoreLibraries" Condition="'$(GetLatest)' == 'true'">
<Exec Command='tf get /version:T "$(CoreLibPath)\Source\Libraries /recursive' ContinueOnError="false" />
</Target>
$ (CoreLibPath) - это относительный путь, переданный в скрипт. Что-то вроде...
<PropertyGroup>
<CoreLibraryPath>..\..\Core\Release\xx.xx.xx.xx</CoreLibraryPath>
</PropertyGroup
Является ли использование относительных путей к локальной файловой системе менее надежным, чем использование путей SCS? т.е. ... $ / Core / Release / xx.xx.xx.xx / Source / Libraries »?
Может быть, мы иногда используем пользовательский интерфейс Dev Studio, а иногда используем командную строку, что сбивает с толку версию TFS для командной строки?
3 ответа
Итак, я осознал свою ошибку. Это было очень просто.
Command =
'tf get
/version:T
/recursive
"$(CoreLibPath)\Source\Libraries <<<-- Missing closing quote.
'
Если вы пропустите закрывающую двойную кавычку в tf get , ошибки не будет. Он просто сообщает, что «Все файлы обновлены».
c:\Web\Release\x.x\x.x.xxxx>tf get /version:T "..\..\..\..\..\Core\Release\x.x\x.x.xxxx.xxxxx(xxxx xx xx - xxx)\Source\Libraries /recursive
All files are up to date.
В: Является ли использование относительных путей к локальной файловой системе менее надежным, чем использование путей SCS? т.е. ... $ / Core / Release / xx.xx.xx.xx / Source / Libraries?
О: Нет, не кажется менее надежным.
В: Может быть, мы иногда используем пользовательский интерфейс Dev Studio, а в других случаях используем командную строку, что сбивает с толку версию TFS для командной строки?
О: Нет, это был случай путаницы с пользователем, а не с SCS.
Попробуйте использовать параметр /force
. Это приведет к тому, что все будет восстановлено, чего вы, возможно, не захотите.
В качестве альтернативы вы можете получить пакет расширений MSBuild от CodePlex - у них есть задачи MSBuild, которые обертывают эти вызовы и работают с IntelliSense, если вы используете Visual Studio для управления своими сценариями сборки.
Ваш itemspec
мне кажется странным, но я не могу предложить никаких конкретных исправлений. Я явно вызываю рабочую область при использовании вызовов командной строки, например. tf get "$/<our product>/<branch>[/<project>]" /force /recursive
. В противном случае путь будет относиться к текущему отображению активного рабочего пространства.
Другой вариант - у пользователя нет доступа к коллекции проектов. В моем случае я мог каким-то образом видеть каталоги, но не имел доступа для извлечения кода. Мне нужно было, чтобы администратор TFS добавил меня как "разработчика".
Похожие вопросы
Новые вопросы
version-control
Контроль версий - это управление изменениями в документах, программах и другой информации, хранящейся в виде компьютерных файлов. Используйте этот тег, чтобы отметить общие вопросы об использовании и применимости контроля версий, сравнения VCS. Для большинства команд и методов, специфичных для каждой конкретной VCS, существуют специальные теги, которые следует отдавать предпочтение.