能否寫一個perforce觸發器在提交時自動刪除空格?最好在python中?那將是什麼樣子?或者你可以不修改文件,因爲他們正在提交?觸發器自動刪除EOL空格?
回答
據我所知,這不能完成,因爲你不能把修改過的文件內容放回服務器。允許您使用p4 print
查看文件內容的唯一兩個trigger types是change-content
和change-commit
。對於後者,這些文件已經在服務器和前者上提交,而您可以看到(未提交的)文件內容,但無法對其進行修改並將其放回服務器上。
唯一可能的觸發器是拒絕要提交EOL空白的文件,以便提交者可以自行修復文件。這裏是一個類似的檢查文件中的選項卡的摘錄,請閱讀關於觸發器的文件,並看看Perforce網站的例子:
def fail(sComment):
print sComment
sys.exit(1)
return
sCmd = "p4 -G files //sw/[email protected]=%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 %[email protected]=%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)
這是我懷疑的。在這種情況下,我認爲我要做的是在運行預先提交測試的客戶端上編寫一個p4包裝器,這可以是其中之一。 –
@jhwist我知道這是一個古老的問題,但我被上面的腳本弄糊塗了。它不會總是返回1,因此總是無法提交(意味着無法將文件提交到p4服務器)。你也不需要導入os,sys?還有sChangeNr被定義在哪裏? – Lorenz03Tx
@ Lorenz03Tx爲了簡潔起見,我遺漏了很多樣板。 – jhwist
- 1. quartz.net自動刪除觸發器
- 2. SublimeText刪除自動完成觸發器
- 3. 刪除觸發器
- 4. 刪除後刪除觸發器只會觸發嗎?
- 5. 刪除變異觸發器
- 6. 無法刪除觸發器
- 7. 刪除觸發器SQL 2005
- 8. 刪除SQL觸發器
- 9. 創建刪除觸發器
- 10. 觸發刪除空白行後INSERT
- 11. MS SQL觸發器 - 可以刪除觸發器也影響刪除行觸發器
- 12. 發送TCP消息/刪除觸發器
- 13. 刪除空格
- 14. 刪除空格
- 15. 刪除空格
- 16. 刪除空格
- 17. 已刪除SQL Server虛擬表爲空ON刪除觸發
- 18. 觸發了刪除
- 19. oracle觸發刪除
- 20. 排在觸發刪除不調用其刪除觸發器在MSSQL
- 21. Netbeans:自動格式 - 從PHP中刪除空格速記<?=
- 22. 劍道格刪除按鈕不會觸發刪除功能
- 23. WordPress刪除手動Ajax觸發器並使用無限滾動
- 24. 單擊「滑動刪除」CommitEditingStyle不觸發
- 25. 只有在有選擇的情況下,才能刪除選擇的EOL空格
- 26. 關於SQL Server刪除觸發器
- 27. Oracle SQL而不是刪除觸發器
- 28. 刪除觸發器不工作
- 29. 在石英中刪除觸發器
- 30. 更新和刪除Oracle觸發器
我不太瞭解perforce,但[文檔] (http://www.perforce.com/perforce/r10.2/manuals/cmdref/triggers.html)顯示它是可能的。你需要編寫一個調用python函數'rstrip()'[[docs](http://docs.python.org/library/stdtypes.html#str.rstrip)]的腳本,然後使用'change-content'觸發器類型。 – brc
我會小心的做這樣的事情自動......你不想從任何人的意圖剝離空白。 (誠然,這是一個奇怪的例子,除非你用空格編程,或者熱衷於去除二進制文件)。如果你確實走這條路線,警告他們並向他們展示你所做的改變的差異,這樣他們可以驗證它是好的。 – Thanatos