Триггер для автоматического удаления пробелов EOL?

Можно ли написать триггер выполнения, чтобы автоматически удалять пробелы во время отправки? Желательно в питоне? Как это будет выглядеть? Или вы не можете изменять файлы по мере их отправки?

1 ответ

Решение

Насколько мне известно, это невозможно сделать, так как вы не можете поместить измененный файл обратно на сервер. Только два типа триггеров, которые позволяют вам видеть содержимое файла с p4 print являются 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)
Другие вопросы по тегам