首页 > 解决方案 > 使用 ColdFusion 的 Git 拉取/获取超时

问题描述

我必须编写一个简单的 ColdFusion 网页,显示多个 Git 存储库的可点击 Git 功能分支。这适用于一组测试人员,因此他们可以轻松地签出远程服务器上的分支以进行测试。我的<cfexecute>作品用于显示分支、签出分支和签出标签。问题是新功能分支/提交永远不会出现在他们面前,因为我无法获得$ git fetch$ git pull工作。出于某种原因,那些超时。我知道这不是 ColdFusion 超时设置。我可以在远程服务器上使用 Git Bash 手动运行 fetch 和 pull,它们会在几秒钟内运行。远程服务器上的 Git 将凭据存储在 Window Credential Manager 中,因此在服务器本身的命令行上使用 Git 时,我永远不会被提示登录。那么为什么会$ git checkout <branch>$ git branch -a命令有效,但不使用此代码获取和拉取...

<cffunction name="execute" access="public" returnformat="JSON">
    <cfargument name="command" type="string" required="true">
    <cfargument name="directory" type="string" required="true">

    <cfexecute name = "C:\Windows\System32\cmd.exe"
        arguments = '/C cd "#arguments.directory#" && "c:\Program Files\Git\cmd\git.exe" #arguments.command#'
        timeout = "600" variable="message" errorVariable="error_message">
    </cfexecute>

    <cfreturn [arguments.directory, arguments.command, message, error_message]>
</cffunction>

谢谢!

标签: gitgithubcoldfusioncfexecute

解决方案


CFexecute 失败的原因是 git pull 命令在进行拉取时正在等待用户指定用户名和密码。要解决此问题,请转到https://github.com/settings/tokens以生成和访问令牌,然后使用该令牌将其传递给拉取 URL,如下所示:

git pull https://MY_TOKEN_GOES_HERE:x-oauth-basic@github.com/myUser/myRepository master

何塞·埃利亚斯


推荐阅读