第16章:完善您的代碼并提交PR?

在之前的章節中,我們學習了如何創建一個完全功能的業務應用程序?,F在,我們將準備好我們的代碼以便分享,并學習如何分享它。

編碼規范?

我們將開始重構代碼以符合Odoo編碼準則。這些準則旨在提高Odoo應用程序代碼的質量。

參考 : 您可以在 編碼規范 中找到Odoo編碼指南。

Exercise

優化你的代碼。

重構你的代碼以遵守編碼規范。不要忘記運行你的代碼檢查工具,并遵守模塊結構、變量命名、方法命名規范、模型屬性順序和 XML ID 等規范。

你的第一個拉取請求(PR)?

以下內容僅供Odoo員工使用。所有提到的存儲庫均不可供第三方訪問。

現在你的代碼符合Odoo代碼規范并且已經完善,讓我們與他人分享它吧。

配置開發存儲庫?

我們將首先為“custom”文件夾創建一個git開發環境,就像我們在“odoo”和“enterprise”開始時所做的一樣。PR將針對 odoo/technical-training-sandbox 存儲庫。

要做到這一點,第一步是在 GitHub 中 fork 此 存儲庫 <https://github.com/odoo/technical-training-sandbox/>`__ 以創建您自己的開發存儲庫。

成功創建開發存儲庫后,我們將配置您現有的 $HOME/src/custom 文件夾,以便能夠提交您的工作。

$ cd $HOME/src/custom
$ git init
$ git remote add training git@github.com:odoo/technical-training-sandbox.git
$ git remote add training-dev git@github.com:xyz-odoo/technical-training-sandbox.git #Don't forget to change xyz-odoo to your own GitHub account
$ git remote set-url --push training no_push #Avoid pushing directly into the main repository
$ git fetch training master
$ git branch master training/master
$ git checkout master #Two new files will be downloaded README.md and .gitignore

請注意,如果您的工作已經在一個 Git 和 GitHub 配置的文件夾 中,那么前面的步驟就不需要了。這種情況發生在您開始在 ‘odoo’ 或 ‘enterprise’ 文件夾中工作時。

分支,提交和推送?

在創建PR之前,必須創建一個新的工作分支并用于提交代碼。之后,該分支將被推送到開發存儲庫。

創建你的工作分支:

$ git checkout -b master-my_first_branch-xyz

你的分支名稱必須遵循以下命名結構:<targetVersion>-<feature>-<trigram>

示例:odoo-dev/odoo上的master-sale-fixes-abc分支是一個包含銷售應用程序修復的分支,將在odoo/odoo存儲庫中部署到主分支,并由ABC完成。

提交你的代碼:

$ git add .
$ git commit

每個人都會閱讀你的提交信息!

提交信息非常重要,請遵循 Git 指南 。

將新分支推送到您的開發存儲庫:

$ git push -u training-dev master-my_first_branch-xyz

警告

永遠不要在不屬于你或穩定分支上使用 git push --force (或 git push -f )。永遠不要,永遠不要,永遠不要!

小技巧

記住,您可以在任何時候使用 git status 命令來檢查您的分支的當前狀態。

小技巧

你可以創建 Git 別名來縮短這些命令。詢問你的同事是否使用 Git 別名,并從他們的工作中獲得靈感。

創建您的第一個 PR?

將分支推送到開發存儲庫后,您將看到類似于以下輸出:

Enumerating objects: 24, done.
Counting objects: 100% (24/24), done.
Compressing objects: 100% (20/20), done.
Writing objects: 100% (23/23), 6.67 KiB | 525.00 KiB/s, done.
Total 23 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
remote:
remote: Create a pull request for 'master-my_first_branch-xyz' on GitHub by visiting:
remote:      https://github.com/xyz-odoo/technical-training-sandbox/pull/new/master-my_first_branch-xyz
remote:
To github.com:xyz-odoo/technical-training-sandbox.git
* [new branch]      master-my_first_branch-xyz -> master-my_first_branch-xyz
Branch 'master-my_first_branch-xyz' set up to track remote branch 'master-my_first_branch-xyz' from 'training-dev'.

創建PR有兩種方式:

  • 點擊 push 命令輸出中顯示的鏈接。

  • 在您的開發存儲庫中打開瀏覽器 https://github.com/xyz-odoo/technical-training-sandbox 。將會有一個按鈕用于創建新的拉取請求。

    ../../../_images/pr_from_branch.png

你會注意到,你的提交信息會被用作拉取請求信息。如果你只有一個提交,那么就會出現這種情況。如果你有多個提交,你可以將這些提交的摘要作為PR信息,或者如果提交不是很多,你可以將提交信息復制/粘貼為PR信息。

../../../_images/pr_message.png

在 runbot 上測試?

Odoo擁有自己的 CI 服務器,名為 runbot。所有提交、分支和PR都將進行測試,以避免穩定版本的回歸或破壞。所有通過測試的運行都將在其自己的服務器上部署,并附帶演示數據。

Exercise

嘗試使用runbot。

隨意訪問runbot網站并打開最新穩定版本的Odoo,以查看所有可用的應用程序和功能。