Skip to content

xmake repo -u 在用户项目根目录执行 git remote set-url 导致项目 remote 被篡改、工作区被重置 #7793

Description

@engsr6982

Xmake 版本

3.1.1

操作系统版本和架构

windows 10 22h2

描述问题

在项目根目录执行 xmake repo -u -v 更新本地仓库时,xmake 没有在仓库目录
.xmake\windows\x64\repositories\levimc-repo 内执行 git 命令,而是在用户当前项目
根目录 D:\Project\EconomyBridge 执行了:

  1. git remote get-url origin
  2. git remote set-url origin https://github.com/LiteLDev/xmake-repo.git
  3. git reset --hard
  4. git pull origin -f

导致

  • 项目的 origin 被从 git@github.com:IceBlcokMC/EconomyBridge.git
    篡改为 https://github.com/LiteLDev/xmake-repo.git
  • 项目工作区被 git reset --hard 重置,未提交修改丢失
  • git pull origin -f 试图把 xmake-repo 拉进用户项目,报
    fatal: refusing to merge unrelated histories

期待的结果

正常更新仓库,而不是修改用户仓库的 remote 地址、重置工作区

工程配置

add_rules("mode.debug", "mode.release")

add_repositories("levimc-repo https://github.com/LiteLDev/xmake-repo.git")

add_requires("levilamina 26.40.2", {configs = {target_type = "server"}})
add_requires("levibuildscript")

if not has_config("vs_runtime") then
    set_runtimes("MD")
end

target("EconomyBridge") -- Change this to your mod name.
    add_rules("@levibuildscript/linkrule")
    if is_plat("windows") then
        add_defines("NOMINMAX", "UNICODE")
        set_exceptions("cxx")
        add_cxflags("/utf-8", "/W4", "/w44265", "/w44289", "/w44296", "/w45263", "/w44738", "/w45204")
        add_cxflags(
            "/EHs",
            "-Wno-microsoft-cast",
            "-Wno-invalid-offsetof",
            "-Wno-c++2b-extensions",
            "-Wno-microsoft-include",
            "-Wno-overloaded-virtual",
            "-Wno-ignored-qualifiers",
            "-Wno-missing-field-initializers",
            "-Wno-potentially-evaluated-expression",
            "-Wno-pragma-system-header-outside-header",
            {tools = {"clang_cl"}}
        )
        set_toolchains("clang-cl")
    end
    add_packages("levilamina")
    set_kind("static")
    set_languages("c++20")
    set_symbols("debug")
    add_headerfiles("src/(econbridge/**.h)")
    add_files("src/**.cpp")
    add_includedirs("src")

    add_defines("LL_PLAT_S")

附加信息和错误日志

PS D:\Project\EconomyBridge> xmake repo -u -v
checking for git ... D:\Program\Git\cmd\git.exe
checking for gzip ... no
checking for 7z ... C:\Program Files\xmake\winenv\bin\7z
updating repositories ..
checking for curl ... C:\Program Files\xmake\winenv\bin\curl
pinging the host(github.com) ... 175 ms
cloning repository(levimc-repo): https://github.com/LiteLDev/xmake-repo.git to D:\Project\EconomyBridge\.xmake\windows\x64\repositories\levimc-repo ..
Cloning into 'D:\Project\EconomyBridge\.xmake\windows\x64\repositories\levimc-repo'...
fatal: unable to access 'https://github.com/LiteLDev/xmake-repo.git/': Recv failure: Connection was reset
error: execv(D:\Program\Git\cmd\git.exe clone https://github.com/LiteLDev/xmake-repo.git -c core.fsmonitor=false -c core.autocrlf=false D:\Project\EconomyBridge\.xmake\windows\x64\repositories\levimc-repo) failed(128), unknown reason
PS D:\Project\EconomyBridge> $env:HTTP_PROXY="http://127.0.0.1:7890"; $env:HTTPS_PROXY="http://127.0.0.1:7890"
PS D:\Project\EconomyBridge> xmake repo -u -v
checking for git ... D:\Program\Git\cmd\git.exe
checking for gzip ... no
checking for 7z ... C:\Program Files\xmake\winenv\bin\7z
updating repositories ..
D:\Program\Git\cmd\git.exe remote get-url origin
updating remote URL for repository(levimc-repo): git@github.com:IceBlcokMC/EconomyBridge.git -> https://github.com/LiteLDev/xmake-repo.git
D:\Program\Git\cmd\git.exe remote set-url origin https://github.com/LiteLDev/xmake-repo.git
pulling repository(levimc-repo): https://github.com/LiteLDev/xmake-repo.git to D:\Project\EconomyBridge\.xmake\windows\x64\repositories\levimc-repo ..
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false reset --hard
HEAD is now at c8e9449 chore: release v0.6.0
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false pull origin -f
remote: Enumerating objects: 4672, done.
remote: Counting objects: 100% (399/399), done.
remote: Compressing objects: 100% (153/153), done.
remote: Total 4672 (delta 206), reused 345 (delta 177), pack-reused 4273 (from 1)
Receiving objects: 100% (4672/4672), 531.28 KiB | 752.00 KiB/s, done.
Resolving deltas: 100% (2073/2073), done.
From https://github.com/LiteLDev/xmake-repo
 + 20f36ba...4da0228 main       -> origin/main  (forced update)
fatal: refusing to merge unrelated histories
error: execv(D:\Program\Git\cmd\git.exe -c core.fsmonitor=false pull origin -f) failed(128), unknown reason
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge> xmake repo -u -v
checking for git ... D:\Program\Git\cmd\git.exe
checking for gzip ... no
checking for 7z ... C:\Program Files\xmake\winenv\bin\7z
updating repositories ..
D:\Program\Git\cmd\git.exe remote get-url origin
pulling repository(levimc-repo): https://github.com/LiteLDev/xmake-repo.git to D:\Project\EconomyBridge\.xmake\windows\x64\repositories\levimc-repo ..
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false reset --hard
HEAD is now at c8e9449 chore: release v0.6.0
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false pull origin -f
fatal: refusing to merge unrelated histories
error: execv(D:\Program\Git\cmd\git.exe -c core.fsmonitor=false pull origin -f) failed(128), unknown reason
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge> xmake --version
xmake v3.1.0+HEAD.96ad28edb, A cross-platform build utility based on Lua
Copyright (C) 2015-present Ruki Wang, https://xmake.io
                         _
    __  ___ __  __  __ _| | ______
    \ \/ / |  \/  |/ _  | |/ / __ \
     >  <  | \__/ | /_| |   <  ___/
    /_/\_\_|_|  |_|\__ \|_|\_\____|
                         by ruki, xmake.io
    👉  Manual: https://xmake.io/guide/quick-start
    🙏  Donate: https://xmake.io/about/sponsor

   ==========================================================================
  | A new version of xmake is available!                                     |
  |                                                                          |
  | To update to the latest version v3.1.1, run "xmake update".              |
   ==========================================================================

PS D:\Project\EconomyBridge> git remote -v
origin  https://github.com/LiteLDev/xmake-repo.git (fetch)
origin  https://github.com/LiteLDev/xmake-repo.git (push)
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge> git remote set-url origin git@github.com:IceBlcokMC/EconomyBridge.git
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge> xmake repo -u -v
checking for git ... D:\Program\Git\cmd\git.exe
checking for gzip ... no
checking for 7z ... C:\Program Files\xmake\winenv\bin\7z
updating repositories ..
D:\Program\Git\cmd\git.exe remote get-url origin
updating remote URL for repository(levimc-repo): git@github.com:IceBlcokMC/EconomyBridge.git -> https://github.com/LiteLDev/xmake-repo.git
D:\Program\Git\cmd\git.exe remote set-url origin https://github.com/LiteLDev/xmake-repo.git
pulling repository(levimc-repo): https://github.com/LiteLDev/xmake-repo.git to D:\Project\EconomyBridge\.xmake\windows\x64\repositories\levimc-repo ..
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false reset --hard
HEAD is now at c8e9449 chore: release v0.6.0
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false pull origin -f
fatal: refusing to merge unrelated histories
error: execv(D:\Program\Git\cmd\git.exe -c core.fsmonitor=false pull origin -f) failed(128), unknown reason
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge> remove-Item -Force .\.xmake\

Confirm
The item at D:\Project\EconomyBridge\.xmake\ has children and the Recurse parameter was not specified. If you continue,
 all children will be removed with the item. Are you sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): y
PS D:\Project\EconomyBridge>
PS D:\Project\EconomyBridge> xmake repo -u -v
checking for git ... D:\Program\Git\cmd\git.exe
checking for gzip ... no
checking for 7z ... C:\Program Files\xmake\winenv\bin\7z
updating repositories ..
checking for curl ... C:\Program Files\xmake\winenv\bin\curl
pinging the host(github.com) ... 234 ms
cloning repository(levimc-repo): https://github.com/LiteLDev/xmake-repo.git to D:\Project\EconomyBridge\.xmake\windows\x64\repositories\levimc-repo ..
Cloning into 'D:\Project\EconomyBridge\.xmake\windows\x64\repositories\levimc-repo'...
remote: Enumerating objects: 4672, done.
remote: Counting objects: 100% (399/399), done.
remote: Compressing objects: 100% (153/153), done.
remote: Total 4672 (delta 206), reused 345 (delta 177), pack-reused 4273 (from 1)
Receiving objects: 100% (4672/4672), 531.28 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (2073/2073), done.
D:\Program\Git\cmd\git.exe remote get-url origin
pulling repository(build-artifacts): https://github.com/xmake-mirror/build-artifacts.git to C:\Users\x\AppData\Local\.xmake\repositories\build-artifacts ..
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false reset --hard
HEAD is now at 03c7471c autoupdate argus-v0.3.0 by ci
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false pull origin main -f
From https://github.com/xmake-mirror/build-artifacts
 * branch              main       -> FETCH_HEAD
Already up to date.
D:\Program\Git\cmd\git.exe remote get-url origin
pulling repository(xmake-repo): https://github.com/xmake-io/xmake-repo.git to C:\Users\x\AppData\Local\.xmake\repositories\xmake-repo ..
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false reset --hard
HEAD is now at aa62a7f85 ghostscript: update to 10.08.0 (#10884)
D:\Program\Git\cmd\git.exe -c core.fsmonitor=false pull origin master -f
From https://github.com/xmake-io/xmake-repo
 * branch                master     -> FETCH_HEAD
Already up to date.
ok
PS D:\Project\EconomyBridge>

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions