修訂提供了命令行工具,使開發人員可以在並行更改上更快地迭代,並減少創建和維護代碼審查的開銷。
revup amend
和revup restack
通過替換緩慢的rebase節省時間修訂需要Python 3.8或更高,並且GIT 2.43或更高。 Revup與Linux,OSX和Windows(有限的測試)一起使用。
在此處遵循說明,為您的操作系統獲取最新的GIT版本。修訂版僅在較新的Git版本中存在標誌。
使用pip
或您喜歡的軟件包管理器安裝。
python3.8 -m pip install revup
通過顯示幫助頁面來驗證安裝成功。
revup -h
您還可以從源構建以獲取最新的更新。
git clone https://github.com/Skydio/revup.git && cd revup
make deps && make package && make install
本教程將指導您使用基本的修訂功能。
通過分叉修訂,創建新的存儲庫或使用您擁有的其他存儲庫來克隆沙盒存儲庫。創建測試PR可以是垃圾郵件,因此不要對其他人的存儲庫進行教程。
git clone https://github.com/ < your-name > /revup.git && cd revup
在第一次運行時,您將需要配置GitHub憑據。在此處創建個人訪問令牌,並選中“完整回購權限”的框。修訂需要此功能才能創建和修改拉動請求。然後運行
revup config github_oauth
並將OAuth複製並粘貼到提示中。
使您的前兩個提交將成為兩個單獨的拉請請求。請注意“主題:”提交消息中的標籤 - 這是導致修訂以識別並對提交行動的原因。每個單獨命名的主題將成為新的拉請請求。
echo meh > foo ; git add foo
git commit -m " My first revup foo " -m " Topic: foo "
echo peh > bar ; git add bar
git commit -m " My first revup bar " -m " Topic: bar "
revup upload
您已經上傳了您的第一個修訂更改!請注意,在Github中,兩個分支目標是“主要”。這使他們可以獨立合併。
在引擎蓋下,修訂為您創建並推動這些分支機構,根據需要跟踪和管理依賴關係。
現在,我們將進行有關“ Foo”的新評論。 “相對”標籤將確保新評論針對正確的分支。
echo deh >> foo ; git add foo
git commit -m " My second revup foo " -m " Topic: foo2 " -m " Relative: foo "
revup upload
有了這個簡單但功能強大的模型,您可以一次獨立上傳和依賴性更改。
現在,讓我們更新拉動請求。
echo heh >> bar ; git add bar
# Either
revup amend HEAD~ --no-edit # Specify a commit to amend
# or
revup amend bar --no-edit # Specify a topic name to amend
revup upload
revup amend
使修改歷史上的提交變得容易。您還有其他選擇用於修改評論的選項:
git rebase --interactive
與git commit --amend
進行相互作用使用git pull --rebase
進行更改。不要在沒有折射的情況下使用git merge
或git pull
因為這會產生合併提交。
默認情況下,如果您拉動但沒有更改提交,則不會上傳。要覆蓋此問題並始終上傳,請運行revup upload --rebase
。
[pull]
rebase = true
[rebase]
autoStash = true
我們建議將上述內容添加到.gitconfig
,以使拉力和重新挑戰更加容易。
這是一些更方便的修訂功能的非詳盡介紹。
有關功能的完整說明,請參見文檔或運行revup -h
或revup upload -h
以man
格式查看文檔。
對於您可能無法推動訪問的項目的貢獻,可以將Revup配置為在主項目中創建拉動請求的同時,將其推入叉子。
為原始和叉子添加GIT遙控器。
$ git remote -v
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (fetch)
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (push)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (fetch)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (push)
上傳時,將遙控器傳遞以在AS中創建拉動請求--remote-name
和叉形遙控器AS --fork-name
。
revup --remote-name origin --fork-name myfork upload
修訂還可以添加審閱者,受讓人和標籤以提取請求。將適當的標籤添加到主題中的任何提交中。
Reviewers: alice, bob
Assignees: eve
Labels: bug, feature, draft
GitHub用戶名可以縮寫,並將最短名稱與給定前綴匹配。
標籤必須完全匹配。 draft
標籤很特別,如果存在,將提出拉拉請求,如果被刪除,請刪除草稿。
修訂通常會自動檢測您的本地基礎分支,並使用它來列出提交和目標評論。您可以選擇將任何特定主題定位於另一個分支機構甚至多個分支,在這種情況下,修訂將將其用作基本分支(並在後一種情況下創建多個拉力請求)。
A fix for multiple branches
Topic: fix
Branches: main, rel1.1
您也可以在命令行上指定基本分支,儘管這通常是不需要的,除非您在AutoDeTector不知道的分支上工作(請參見下面的Repo Config)。
revup upload --base-branch custom-branch-name
修訂將在每個拉的請求中添加2條評論,以為用戶和審閱者提供有用的功能。默認情況下啟用這些,並隨著拉請求更改而自動更新。
評論圖提供了與當前拉的請求相對關係的所有本地拉動請求的鏈接和標題,包括其依賴的所有內容或取決於它的所有內容。這使您可以快速瀏覽鏈中的拉動請求。
PatchSets表為給定的拉請求提供了上傳的歷史記錄,以及每個上傳之間的差異的鏈接和摘要。值得注意的是,修訂專門處理您重新置換然後上傳的情況,並將向您顯示帶有上游文件的差異。
使用標準配置文件格式可以進行高度配置。每個標誌也是一個配置選項,因此用戶可以獲得所需的確切行為。
在命令行上指定的標誌優先考慮,然後是~/.revupconfig
中的config,然後是當前儲備金中的.revupconfig
。
Repo In-Repo配置文件的主要用途是設置主分支和發布分支的命名。
例如,如果您的主分支是master
,並且釋放分支被稱為rel1.1
,則將以下內容提交為repo root中的.revupconfig
。
[revup]
main_branch = master
base_branch_globs =
rel[1-9].[0-9]
rel[1-9].[0-9][0-9]
~/.revupconfig
的用戶配置通過默認最常用的標誌節省了時間。
例如,習慣工作流程後,用戶可能不需要確認檢查。添加以下行將與使用--skip-confirm
一起運行。
[upload]
skip_confirm = True
(又稱“堆疊式差異”,“基於補丁”等)
如果您使用了諸如Gerrit,Phabricator或Git郵件列表之類的工具,則可能已經熟悉這種開發方式。如果您想閱讀更多信息,這裡有一些關於該主題的書面討論。
修訂的一部分是由此開源項目的非避免性列表的啟發,該項目也支持基於補丁的工作流程:
revup upload
分支機構,但不會推出或創建評論。revup amend
和上述的後端與處理衝突的合併系統感謝您為修訂貢獻!您可以開始自己的想法,或者查看其他人興奮的想法的問題頁面。
報告問題時:
revup -v
運行同一命令以提供詳細的日誌。 修訂版由Skydio發布,但不是正式支持的Skydio產品。