论崇高文本Package Control问题:如何正确调用符号链接的git子模块?
我找出是什么原因导致这个错误。我有包All Autocomplete
触发它。然后我去了文件夹Packages/All Autocomplete
,并注意到它是一个git repo synlinked。然后我删除.git
文件,指向gitdir: ../.git/modules/All Autocomplete
并recloned存储库,因此它的文件在回购站内。然后,程序包控件停止抛出包All Autocomplete
的错误,并开始为下一个也是git子模块并且.git
与父git文件夹同步的包执行相同的错误。
这是因为All Autocomplete
是一个子模块,因此它的控释片文件是:
gitdir: ../.git/modules/All Autocomplete
现在你可以复制它,但你需要:
- 要使你的Packages文件夹成为一个git存储库,并将
All Autocomplete
作为子模块添加。 - 删除它,并安装有
git clone --recursive
克隆你Package
文件夹回购这将创建All Autocomplete
作为一个git子模块,并在其上存储文件父git的文件夹:
gitdir: ../.git/modules/All Autocomplete
我打电话的Git子模块此子symliked:
我没有使用Python解释了一些测试,它与proc = subprocess.Popen()
一个问题:
>>> import os
>>> import subprocess
>>> startupinfo = subprocess.STARTUPINFO();startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW;
>>> proc = subprocess.Popen(['C:/Program Files (x86)/Git/bin/git.exe', 'symbolic-ref', '-q', 'HEAD'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, startupinfo=startupinfo, cwd='D:/SublimeText/Data/Packages/amxmodx', env=os.environ)
>>> proc.communicate()
(b'', None)
>>> proc = subprocess.Popen(['C:/Program Files (x86)/Git/bin/git.exe', 'symbolic-ref', '-q', 'HEAD'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, startupinfo=startupinfo, cwd='D:/SublimeText/Data/Packages/All Autocomplete', env=os.environ)
>>> proc.communicate()
(b'refs/heads/master\n', None)
>>>
在第一个命令,我做它有.git
文件符号链接到gitdir: ../.git/modules/amxmodx
包amxmodx
。我们得到了输出(b'', None)
。
在第二个命令中,我使用All Autocomplete
包,其中包含.git
文件夹,因为我只是将它克隆为git子模块。因此,由于它的安装不是git clone --recursive
,.git
是 的一个文件夹,而且不是符号链接到gitdir: ../.git/modules/
,所以它有实际的git文件内容。
因此,我们得到了输出(b'refs/heads/master\n', None)
,它正常工作并使包控件不会抛出错误。
如何拨打电话与subprocess.Popen()
一个符号链接git的子模块,以不向符号链接gitdir: ../.git/modules/
产生的符号链接子模块的输出(b'refs/heads/master\n', None)
,而不是(b'', None)
一个git子模块的调用正常工作?
我的系统信息/版本:
$ git --version
git version 2.13.0.windows.1
$ systeminfo | findstr /B /C:"OS Version"
OS Version: 10.0.15063 N/A Build 15063
$ python --version
Python 3.6.1 :: Anaconda 4.4.0 (32-bit)
更新
我使用os.system
也试过:
>>> cur_dir = os.getcwd()
>>> os.chdir(r'D:/SublimeText/Data/Packages/All Autocomplete')
>>> os.getcwd()
'D:\\SublimeText\\Data\\Packages\\All Autocomplete'
>>> os.system(r'"C:/Program Files (x86)/Git/bin/git.exe" symbolic-ref -q HEAD')
refs/heads/master
0
>>> os.chdir(r'D:/SublimeText/Data/Packages/amxmodx')
>>> os.system(r'"C:/Program Files (x86)/Git/bin/git.exe" symbolic-ref -q HEAD')
1
>>>
我也开了一个问题,这对windows的git: