如何从 git 调用实用程序 omeld (oitnb)
How to invoke utility omeld (oitnb) from git
oitnb(https://pypi.org/project/oitnb/) 看起来像是结合了yapf和black好的部分。作者声称它解决了使用名为 omeld 的实用程序将旧修订(格式化前)与格式化后提交的修订进行比较的问题。集成该实用程序的示例是针对 mercurial 的,我们使用的是 git。
我已尝试使用
注册 omeld 实用程序
get config --global diff.tool /usr/local/bin/omeld
但确实让事情起作用了,git
一直告诉它不知道 omeld。
关于如何解决这个问题有什么想法吗?
您可以尝试使用下面显示的别名,但在这样做之前您应该升级到 oitnb>0.1.3
或使用以下替代 omeld.py
:
import sys
import os
def main():
# print('omeld:', os.getcwd(), sys.argv[1:])
assert len(sys.argv) == 3, 'omeld: expecting two arguments'
runs = 0
for idx, arg in enumerate(sys.argv[1:]):
assert os.path.exists(sys.argv[1]), f'omeld: parameter {idx}, cannot find "{arg}"'
rp = os.path.realpath(arg)
# check if you are on a temporary directory, so there is less chance to screw up
if rp.startswith('/tmp/') or rp.startswith('/var/tmp/'):
runs += 1
os.system('oitnb -q ' + rp)
if runs > 0:
os.system('meld ' + ' '.join(sys.argv[1:]))
else:
print('could not run oitnb on "{}" or "{}"'.format(*sys.argv[1:]))
if __name__ == '__main__':
main()
因为如果您将旧版本与当前状态进行比较,则与 oitnb=0.1.3
一起分发的版本可以格式化源目录中的文件。在 git
中,这似乎更频繁地发生(似乎优化为不创建临时文件,即使例如,如果文件的当前版本自第二次修订提交以来没有更改)。
别名:
alias gomeld='git difftool --extcmd=/path/to/omeld -y'
我考虑过更改配置,但也没有成功。
oitnb(https://pypi.org/project/oitnb/) 看起来像是结合了yapf和black好的部分。作者声称它解决了使用名为 omeld 的实用程序将旧修订(格式化前)与格式化后提交的修订进行比较的问题。集成该实用程序的示例是针对 mercurial 的,我们使用的是 git。
我已尝试使用
注册 omeld 实用程序get config --global diff.tool /usr/local/bin/omeld
但确实让事情起作用了,git
一直告诉它不知道 omeld。
关于如何解决这个问题有什么想法吗?
您可以尝试使用下面显示的别名,但在这样做之前您应该升级到 oitnb>0.1.3
或使用以下替代 omeld.py
:
import sys
import os
def main():
# print('omeld:', os.getcwd(), sys.argv[1:])
assert len(sys.argv) == 3, 'omeld: expecting two arguments'
runs = 0
for idx, arg in enumerate(sys.argv[1:]):
assert os.path.exists(sys.argv[1]), f'omeld: parameter {idx}, cannot find "{arg}"'
rp = os.path.realpath(arg)
# check if you are on a temporary directory, so there is less chance to screw up
if rp.startswith('/tmp/') or rp.startswith('/var/tmp/'):
runs += 1
os.system('oitnb -q ' + rp)
if runs > 0:
os.system('meld ' + ' '.join(sys.argv[1:]))
else:
print('could not run oitnb on "{}" or "{}"'.format(*sys.argv[1:]))
if __name__ == '__main__':
main()
因为如果您将旧版本与当前状态进行比较,则与 oitnb=0.1.3
一起分发的版本可以格式化源目录中的文件。在 git
中,这似乎更频繁地发生(似乎优化为不创建临时文件,即使例如,如果文件的当前版本自第二次修订提交以来没有更改)。
别名:
alias gomeld='git difftool --extcmd=/path/to/omeld -y'
我考虑过更改配置,但也没有成功。