触发自动删除EOL空格?

时间:2011-10-18 22:21:59

标签: python triggers perforce

是否可以编写perforce触发器以在提交时自动删除空格?最好是在python?那会是什么样的?或者,您是否可以在提交文件时对其进行修改?

1 个答案:

答案 0 :(得分:0)

据我所知,这是无法完成的,因为您无法将修改后的文件内容放回服务器。允许您查看p4 print文件内容的唯一两个trigger typeschange-contentchange-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)