2016-09-26 17 views
1

我想在多個服務組成的系統(在其各自的資源庫)使用GRPC,我想知道關於對版本控制方法在Git中:戰略保持GRPC定義和生成的文件在VCS

  • * .proto文件
  • 生成的代碼(主要是進入/ Java的/ Python)的

到目前爲止,我還想着像做法:

  • * .proto文件 - 或者:
    1. 每個定義進入分離庫
    2. 每個定義的土地中的服務儲存庫實現定義的服務
  • 生成的代碼 - 中的一種:
    1. 進入與1中相同的存儲庫。上述
    2. 與2中進入同一存儲庫。上述
    3. 沒有生成的代碼在所有 - 它是由內置的系統/腳本之前實際建成

我不是太有經驗的GRPC我也很難告訴那些之一是產生多比其他人更好/更差。我可以看到這些優點和缺點(比如良好的IDE集成,不需要生成代碼的應用程序等),但我想知道一些「大」潛在問題?哪種方法是「最佳實踐」?

回答

1

一般的最佳做法是將生成的文件保存在存儲庫中,並始終在生成時自動生成它們。例如,當您編譯Java程序時,您不會將任何生成的.jar文件添加到源代碼管理;這是多餘的,並要求在路上頭痛。 protobuf文件也是一樣。

可想而知場景中它是有用保持源代碼控制生成的文件(例如,作爲黃金的文件進行單元測試),但這些都是對案件逐案基礎上,而不是通過的一般經驗法則特殊,並可能需要更復雜的機器來確保生成的任何最新信息。

注意這個細微的差別比.proto文件分發產生的來源。並非代碼中的每個用戶都希望或者讓系統能夠從源代碼重建。通過類似的類比,您不一定將您的Java項目作爲原始代碼分發,而是作爲.jar文件分發。