Триггер для автоматического удаления пробелов 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)