我不知道什麼是關於源代碼庫協議緩衝區中的最佳實踐(如GIT):只將.proto協議緩衝區文件放入存儲庫中?
我必須把只有.proto文件中的信息庫,並讓其他人誰使用源代碼來重新生成類代碼用protoc編譯器?或者是將protoc文件和protoc編譯器生成的源代碼放在一起的最佳實踐?
我不知道什麼是關於源代碼庫協議緩衝區中的最佳實踐(如GIT):只將.proto協議緩衝區文件放入存儲庫中?
我必須把只有.proto文件中的信息庫,並讓其他人誰使用源代碼來重新生成類代碼用protoc編譯器?或者是將protoc文件和protoc編譯器生成的源代碼放在一起的最佳實踐?
如果你能避免它,你永遠不應該檢入生成的代碼。
如果您在生成的代碼檢查,你承擔多種風險,如:
.proto
文件進行更改,但忘記更新生成的代碼。他們的變化實際上不會「生效」,直到其他人以後由於其他原因重新生成生成的代碼 - 然後突然間他們看到了他們並不期待的副作用。如果由於某種原因,你絕對有生成的代碼來檢查,我強烈建議創建一個自動化測試,檢查,如果簽入的代碼相匹配什麼,如果運行新的protoc
將產生。 (例如,protobuf存儲庫本身包含descriptor.proto
的生成代碼的簽入副本,因爲需要編譯protoc
以創建循環依賴關係,但需要執行單元測試,以檢查登錄的代碼是否與protoc
會匹配生成)。
如果您的項目通常以其源代碼形式(例如,每個用戶應該編譯自己的庫或程序)使用,我會提供具有生成的文件的可用發行包。
但我不會把生成的文件直接放入存儲庫。如果大多數用戶使用編譯後的二進制文件,提供易於編譯的源文件包也不是那麼重要。 protobuf生成器然後成爲另一個生成依賴項。