2011-04-05 41 views
0

我想了解在這個頁面的代碼:https://github.com/corroded/git-achievements/blob/gh-pages/git-achievements有助於理解這個慶典文件

,我在它是如何工作損失是玩。我知道一些bash和shell腳本,但是這個腳本如何實際「存儲」你使用命令的次數(即時猜測保存到文本文件中?)以及它如何「感知」你實際輸入的是git命令?我有一種感覺,它是從第464行開始的,但我似乎沒有完全遵循邏輯。

任何人都可以在一個更容易理解的上下文中解釋這個嗎?

我打算爲其他命令做一些成就,我希望有一個關於如何在沒有隨機複製和粘貼東西和巫術的情況下進行操作的想法。

回答

1

是在464上啓動腳本,之前的一切都是幫助功能。我不知道它是如何安裝的,但我會假設你必須調用這個腳本來代替正常的git-command。它只是檢查第一個參數是否成就,如果不是,那麼只執行(常規)git和其餘參數。之後,他檢查是否發生錯誤(如果他退出)。然後他只做了log_action和check_for_achievments。 log_action只是將帶有日期的已發佈命令寫入文本文件中,而實現爲特定事件掃描該日誌文件。如果你想添加另一個成就,你必須在這個check_for_achievments中做到這一點。 只要看看大個案如何處理它(大部分成果都調用count_function來計算函數的#用法,並在達到2的冪次時匹配)。

+0

實際上,如果您查看安裝,您必須別名,所以您不必執行特殊命令。 – corroded 2011-04-05 16:15:41

+0

看着我的bash配置文件,它確實接管了我的git命令:我有別名:別名git =「git-achievement」 – corroded 2011-04-05 16:16:28

+0

我猜你別名git = name_of_this_script。當你打電話給git時,他會調用這個腳本。而這個腳本(忽略別名)作爲迴應調用真正的git來執行輸入的命令。它充當正常git的包裝 - 這就是他如何記錄所有git命令(在執行它們之後提到的,他將它們寫入點文件並檢查實現情況) – flolo 2011-04-05 16:17:39