summaryrefslogtreecommitdiff
path: root/xmake/modules/devel/git/pull.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2020-06-24 00:40:19 +0800
committerruki <[email protected]>2020-06-23 22:01:57 +0800
commit18bded45c229f5580c13fc8b4afc5edb6f18819a (patch)
tree52b63db3274349f9a41872414208c7c30058cfd7 /xmake/modules/devel/git/pull.lua
parent39e0626b0879f882812a178519b0a0998411866e (diff)
improve proxy
Diffstat (limited to 'xmake/modules/devel/git/pull.lua')
-rw-r--r--xmake/modules/devel/git/pull.lua22
1 files changed, 18 insertions, 4 deletions
diff --git a/xmake/modules/devel/git/pull.lua b/xmake/modules/devel/git/pull.lua
index 6e0f0a735..2320c51bd 100644
--- a/xmake/modules/devel/git/pull.lua
+++ b/xmake/modules/devel/git/pull.lua
@@ -20,8 +20,8 @@
-- imports
import("core.base.option")
-import("core.base.global")
import("lib.detect.find_tool")
+import("net.proxy")
-- pull remote commits
--
@@ -66,9 +66,23 @@ function main(opt)
-- use proxy?
local envs
- local proxy = global.get("proxy")
- if proxy then
- envs = {ALL_PROXY = proxy}
+ local proxy_conf = proxy.get()
+ if proxy_conf then
+ -- get proxy configuration from the current remote url
+ local remoteinfo = try { function() return os.iorunv(git.program, {"remote", "-v"}) end }
+ if remoteinfo then
+ for _, line in ipairs(remoteinfo:split('\n', {plain = true})) do
+ local splitinfo = line:split("%s+")
+ if #splitinfo > 1 and splitinfo[1] == (opt.remote or "origin") then
+ local url = splitinfo[2]
+ if url then
+ proxy_conf = proxy.get(url)
+ end
+ break
+ end
+ end
+ end
+ envs = {ALL_PROXY = proxy_conf}
end
-- pull it