summaryrefslogtreecommitdiff
path: root/xmake/modules/devel/git/submodule/reset.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/modules/devel/git/submodule/reset.lua')
-rw-r--r--xmake/modules/devel/git/submodule/reset.lua24
1 files changed, 20 insertions, 4 deletions
diff --git a/xmake/modules/devel/git/submodule/reset.lua b/xmake/modules/devel/git/submodule/reset.lua
index e0c7bf98d..f3c5ca45a 100644
--- a/xmake/modules/devel/git/submodule/reset.lua
+++ b/xmake/modules/devel/git/submodule/reset.lua
@@ -36,11 +36,7 @@ import("lib.detect.find_tool")
-- @endcode
--
function main(opt)
-
- -- init options
opt = opt or {}
-
- -- find git
local git = assert(find_tool("git"), "git not found!")
-- init argv
@@ -79,6 +75,26 @@ function main(opt)
table.insert(argv, opt.commit)
end
+ -- enable long paths
+ local longpaths_old
+ local longpaths_changed = false
+ if opt.longpaths then
+ local longpaths_old = try {function () return os.iorunv(git.program, {"config", "--get", "--global", "core.longpaths"}, {curdir = opt.repodir}) end}
+ if not longpaths_old or not longpaths_old:find("true") then
+ os.vrunv(git.program, {"config", "--global", "core.longpaths", "true"}, {curdir = opt.repodir})
+ longpaths_changed = true
+ end
+ end
+
-- reset it
os.vrunv(git.program, argv, {curdir = opt.repodir})
+
+ -- restore old long paths configuration
+ if longpaths_changed then
+ if longpaths_old and longpaths_old:find("false") then
+ os.vrunv(git.program, {"config", "--global", "core.longpaths", "false"}, {curdir = opt.repodir})
+ else
+ os.vrunv(git.program, {"config", "--global", "--unset", "core.longpaths"}, {curdir = opt.repodir})
+ end
+ end
end