是否可以编写perforce触发器以在提交时自动删除空格?最好是在python?那会是什么样的?或者,您是否可以在提交文件时对其进行修改?
答案 0 :(得分:0)
据我所知,这是无法完成的,因为您无法将修改后的文件内容放回服务器。允许您查看p4 print
文件内容的唯一两个trigger types是change-content
和change-commit
。对于后者,文件已经在服务器上提交,而对于前者,虽然您可以看到(未提交的)文件内容,但是无法修改它并将其放回服务器上。
唯一可能的触发器是拒绝提交EOL空格的文件,以便提交者可以自行修复文件。以下是检查文件中选项卡的类似摘录,请阅读有关触发器的文档,并查看Perforce站点的示例:
def fail(sComment):
print sComment
sys.exit(1)
return
sCmd = "p4 -G files //sw/...@=%s" % sChangeNr
stream = os.popen(sCmd, 'rb')
dictResult = []
try:
while 1:
dictResult.append(marshal.load(stream))
except EOFError:
pass
stream.close()
failures = []
# check all files for tabs
for element in dictResult:
depotFile = element['depotFile']
sCmd = "p4 print -q %s@=%s" % (depotFile,sChangeNr)
content = os.popen(sCmd, 'rb').read()
if content.find('\t') != -1:
failures.append(depotFile)
if len(failures) != 0:
error = "Files contain tabulators (instead of spaces):\n"
for i in failures:
error = error + str(i) + "\n"
fail(error)