为什么VSTS私有代理要尝试GIT签出?

为什么VSTS私有代理要尝试GIT签出?,git,azure-devops,Git,Azure Devops,我有一个VSTS私有代理试图运行一个标准的“获取源代码”构建步骤,在GIT存储库中执行 我有两个问题: 为什么代理在拉取文件后尝试“签出”存储库?正如我所理解的,如果我计划跟踪对文件的更改,“checkout”命令可能不正确,那么它很有用。在这种情况下,我所要做的就是部署它们,所以签出似乎没有必要。我没有看到“获取源代码”构建步骤的任何配置选项来更改此行为。似乎一个简单的“Git拉动”就足以抓住最新的变化 签出似乎已完成,但代理报告失败,并且没有给出任何原因,因此退出。我不知道为什么。我还可以找

我有一个VSTS私有代理试图运行一个标准的“获取源代码”构建步骤,在GIT存储库中执行

我有两个问题:

  • 为什么代理在拉取文件后尝试“签出”存储库?正如我所理解的,如果我计划跟踪对文件的更改,“checkout”命令可能不正确,那么它很有用。在这种情况下,我所要做的就是部署它们,所以签出似乎没有必要。我没有看到“获取源代码”构建步骤的任何配置选项来更改此行为。似乎一个简单的“Git拉动”就足以抓住最新的变化

  • 签出似乎已完成,但代理报告失败,并且没有给出任何原因,因此退出。我不知道为什么。我还可以找其他日志吗

  • 以下是相关的截断日志条目:

    2018-04-17T22:40:56.3673827Z ##[section]Starting: Get Sources
    2018-04-17T22:40:56.6017206Z Syncing repository: MyRepositoryName (TfsGit)
    2018-04-17T22:40:56.6345172Z Prepending Path environment variable with directory containing 'git.exe'.
    2018-04-17T22:40:56.6731072Z ##[command]git version
    2018-04-17T22:40:57.6691314Z git version 2.14.3.windows.1
    2018-04-17T22:40:57.7442618Z ##[command]git config --get remote.origin.url
    2018-04-17T22:40:58.0387545Z ##[command]git config gc.auto 0
    2018-04-17T22:40:58.2060676Z ##[command]git config --get-all http.https://accountname.visualstudio.com/TeamName/_git/MyRepositoryName.extraheader
    2018-04-17T22:40:58.3387349Z ##[command]git config --get-all http.proxy
    2018-04-17T22:40:58.5041394Z ##[command]git -c http.extraheader="AUTHORIZATION: bearer ********" fetch --tags --prune --progress --no-recurse-submodules origin
    2018-04-17T22:41:01.0697064Z ##[command]git checkout --progress --force aa3e90152725f1f2489f9d657e02d29336a33ca6
    2018-04-17T22:41:05.7394799Z Checking out files:   0% (85/285855)   
    2018-04-17T22:41:06.7309776Z Checking out files:   0% (162/285855)   
    ...
    2018-04-18T00:09:28.7067967Z Checking out files: 100% (285855/285855), done.
    2018-04-18T00:09:34.7445251Z Note: checking out 'aa3e90152725f1f2489f9d657e02d29336a33ca6'.
    2018-04-18T00:09:34.7445879Z 
    2018-04-18T00:09:34.7446180Z You are in 'detached HEAD' state. You can look around, make experimental
    2018-04-18T00:09:34.7446601Z changes and commit them, and you can discard any commits you make in this
    2018-04-18T00:09:34.7448203Z state without impacting any branches by performing another checkout.
    2018-04-18T00:09:34.7448381Z 
    2018-04-18T00:09:34.7448593Z If you want to create a new branch to retain commits you create, you may
    2018-04-18T00:09:34.7448803Z do so (now or later) by using -b with the checkout command again. Example:
    2018-04-18T00:09:34.7448980Z 
    2018-04-18T00:09:34.7449144Z   git checkout -b <new-branch-name>
    2018-04-18T00:09:34.7449467Z 
    2018-04-18T00:09:34.7449669Z HEAD is now at aa3e90152... Deleted .vs
    2018-04-18T00:09:35.7714386Z ##[error]Git checkout failed with exit code: 1
    2018-04-18T00:09:35.7961679Z ##[section]Finishing: Get Sources
    
    2018-04-17T22:40:56.3673827Z#[部分]开始:获取源代码
    2018-04-17T22:40:56.6017206Z同步存储库:MyRepositoryName(TfsGit)
    2018-04-17T22:40:56.6345172Z预编路径环境变量,目录包含“git.exe”。
    2018-04-17T22:40:56.6731072Z###[命令]git版本
    2018-04-17T22:40:57.6691314Z git版本2.14.3.windows.1
    2018-04-17T22:40:57.7442618Z###[命令]git config--获取remote.origin.url
    2018-04-17T22:40:58.0387545Z###[命令]git config gc.auto 0
    2018-04-17T22:40:58.2060676Z###[命令]git config——获取所有http。https://accountname.visualstudio.com/TeamName/_git/MyRepositoryName.extraheader
    2018-04-17T22:40:58.3387349Z###[命令]git config--获取所有http.proxy
    2018-04-17T22:40:58.5041394Z##[command]git-c http.extraheader=“AUTHORIZATION:bearer********”fetch--tags--prune--progress--no recurse submodules origin
    2018-04-17T22:41:01.0697064Z###[命令]git签出--进度--强制aa3e90152725f1f2489f9d657e02d29336a33ca6
    2018-04-17T22:41:05.7394799Z签出文件:0%(85/285855)
    2018-04-17T22:41:06.7309776Z签出文件:0%(162/285855)
    ...
    2018-04-18T00:09:28.7067967Z签出文件:100%(285855/285855),完成。
    2018-04-18T00:09:34.7445251Z注:签出“aa3e90152725f1f2489f9d657e02d29336a33ca6”。
    2018-04-18T00:09:34.7445879Z
    2018-04-18T00:09:34.7446180Z你处于“分离的头”状态。你可以四处看看,做实验
    2018-04-18T00:09:34.7446601Z更改并提交,您可以放弃在此过程中所做的任何提交
    2018-04-18T00:09:34.7448203Z通过执行另一个签出操作,在不影响任何分支的情况下保持状态。
    2018-04-18T00:09:34.7448381Z
    2018-04-18T00:09:34.7448593Z如果您想创建一个新分支来保留您创建的提交,您可以
    2018-04-18T00:09:34.7448803Z再次使用-b和checkout命令执行此操作(现在或以后)。例子:
    2018-04-18T00:09:34.7448980Z
    2018-04-18T00:09:34.7449144Z吉特结帐-b
    2018-04-18T00:09:34.7449467Z
    2018-04-18T00:09:34.7449669Z磁头现在位于aa3e90152。。。已删除。vs
    2018-04-18T00:09:35.7714386Z###[错误]Git签出失败,退出代码:1
    2018-04-18T00:09:35.7961679Z###[部分]整理:获取来源
    
    签出是填充工作树所必需的,以便VSTS中定义的任务对签出的文件进行操作

    它在这里进行签出是一个提交,而不是一个分支,这意味着它会导致一个新的提交,而不是跟踪任何新的提交

    我不知道有更详细的日志。
    可能最后一个“Deleted.vs”在最后一个步骤中遇到了一些错误(比如通过保留句柄来阻止删除的过程)。
    通常,我会尝试连接到BuildAgent服务器,并复制git命令以查看发生了什么


    评论中的OP报告:

    我发现在签出过程中出现了“路径太长”错误

    在这种情况下,如果可以,请将作业配置为在subst()定义的驱动器号中签出


    当然,请检查您是否可以执行一项操作,避免Git回购协议中的长路径部分。

    谢谢,这很有帮助!我想我在结账过程中发现了一个“路径太长”错误。您知道如何配置VSTS私有代理GIT属性,以便我可以将core.longpath设置为true吗?@user1142433很好。我已相应地编辑了我的答案