2015-06-04 37 views
4

我有水銀鉤像這樣:忽略某些善變命令在水銀鉤

[hooks] 
pretxncommit.myhook = python:path/to/file:myhook 

與代碼看起來像這樣:

def myhook(ui, repo, **kwargs): 
    #do some stuff 

但這鉤運行在使用commit邏輯命令做其他事情,在我的情況下hg shelve。有沒有辦法獲得用戶輸入的命令以避免在該命令上運行鉤子?

或許是這樣的:

def myhook(ui, repo, command, **kwargs): 
     if command is "hg shelve" 
      return 0 
     #do some stuff 

回答

2

很不幸,答案似乎是否定的。我只是調試到了hg 3.1的鉤子機制,並且關於發出哪個命令的信息不會傳播到鉤子函數中。我能想到的唯一方法就是用調試器api從調用堆棧中提取信息來破解難看的東西。

另一個黑客將檢查sys.argv,但我擔心這也是非常不可靠的(因爲它無法檢測到是否通過Command Server執行某些操作)。

BTW我用這個片段附加一個調試器:

def myhook(ui, repo, **kwargs): 
    print kwargs 
    from pdb import set_trace 
    set_trace()