【问题标题】:Git Fetch Error with UNCUNC 的 Git 获取错误
【发布时间】:2012-07-22 13:51:42
【问题描述】:

我有一个 GIT 备份脚本,从命令行执行时可以完美运行(它是我们主要 GIT 代表的每日备份):

@echo off
rem -- Set Parameters
rem -- daliy GIT backup
REM Get DATE
set mm=%Date:~4,2%
set dd=%Date:~7,2%
set yy=%Date:~10,4%
set TODAY=%yy%%mm%%dd%
for /f %%a in ('date /t') do set DAY=%%a
if %DAY%==Sun goto :weekend
if %DAY%==Sat goto :weekend
goto :weekday
:weekend
:: No backup after weekends
echo %day%
exit
:weekday
:: Backup during weekdays
REM Connect to share
REM net use z: \\backupnas\backup\
Z:
cd \
cd git
REM Start backup of current GITS
cd OptiTexRepo.git
call git fetch
cd ..
RAR.exe a -rr10 -s ARCHIVES\%TODAY%.OptiTexRep.git.rar OptiTexRepo.git
cd OptiTexRepo_V11.1.git
call git fetch
cd ..
RAR.exe a -rr10 -s ARCHIVES\%TODAY%.OptiTexRepo_V11.1.git.rar OptiTexRepo_V11.1.git
REM exit

但是,当我每天从 W2008R2 服务器将其作为计划任务运行时,它立即存在(与问题 https://serverfault.com/questions/343496/powershell-script-works-from-command-line-not-from-task-scheduler-why 非常相似) 这给了我一个想法,检查天气 GIT FETCH 是否与 UNC 一起正常工作 - 显然可以,但是在任务中运行时 - 出了点问题 - 我不知道是什么。

根据问题:git on UNC path git 应该可以工作,但我不明白脚本命令需要什么才能使其实际工作。

  • 目前我将备份驱动器映射到 Z:,当我将 CD 放入该文件夹时,我只是 GIT FETCH(从 master 所在的配置文件中读取)

  • 如何使用 UNC 做到这一点?这也适用于任务调度程序?

  • 还是问题出在其他地方?

【问题讨论】:

    标签: git command-line sql-server-2008-r2 scheduled-tasks


    【解决方案1】:

    使用 Git 2.24(2019 年第四季度),您可以使用 file:// 协议明确指定 UNC 路径。

    这修复了git-for-windows/git issue 1264,使用此类 URL 失败:

    $ git clone file://server/file/path/here
    Cloning into 'here'...
    fatal: 'C:/Program Files/Git/file/path/here' does not appear to be a git repository
    fatal: Could not read from remote repository.
    

    参见Torsten Bögershausen (tboegi)commit ebb8d2c(2019 年 8 月 24 日)。
    (由 Junio C Hamano -- gitster -- 合并于 commit aadac06,2019 年 9 月 30 日)

    mingw:在git clone file://server/share/repo 中支持UNC

    扩展解析器以接受file://server/share/repo,就像 Windows 用户期望它被解析的那样,他们习惯于通过\\server\share\folder 形式的 UNC 路径引用文件共享。

    加强检查以避免将file://C:/some/path 处理为 UNC 路径。


    Git 2.25.2(2020 年 3 月)为此用例添加了测试。

    参见Johannes Schindelin (dscho)commit bfe2bbb(2020 年 2 月 13 日)。
    (由 Junio C Hamano -- gitster -- 合并到 commit fc25a19,2020 年 2 月 17 日)

    t5580:在没有 file:// 的情况下测试克隆,通过 UNC 路径测试获取

    签字人:约翰内斯·辛德林

    在 Windows 上,使用网络驱动器是很常见的。网络驱动器路径(或“网络共享”或 UNC 路径)的格式为:

    \\<server>\<share>\...
    

    我们已经围绕这些类型的路径进行了一些回归测试,但是我们错过了在没有前导 file://(并且使用反斜杠而不是正斜杠)的情况下从 UNC 路径进行克隆和获取。这个小补丁弥补了这一差距。

    将命令添加到测试脚本的名称有点傻,所以我们在测试更多 UNC 内容时重命名它。

    【讨论】:

      【解决方案2】:

      Git 确实可以使用 UNC 路径,但通常将它们用作 Unixy 路径更可靠 - 例如 git clone //backupnas/backup/repo.git

      作为任务运行时 - 检查权限是否允许您的任务以读取权限查看远程路径。除此之外 - 脚本中有很多回声并测试运行命令的结果代码。对于最新版本的 msysGit,您可能不再需要“调用 git”,因为包装器 git.cmd 已更改为 git.exe 以解决 ^ 字符的一些引用问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多