為什麼Github要把程式碼合併請求稱為pull request而不是push request?
三叔
三叔 2017-06-20 10:05:54
0
4
1100

https://stackoverflow.com/que...

我看了這裡面的解釋,感覺還是不夠有說服力啊

我的理解是:我做了一些修改,我請求把我的修改push到你的倉庫,然後你review一下我的程式碼,如果沒問題就接受請求merge,這樣的話叫做push request豈不是更合適?因為這個操作是我主動發起的。 pull是倉庫主向我fork的倉庫發起的操作,那麼pull request這種操作應該是要上游倉庫主來向我發起啊,而不是我主動讓上游倉庫主來pull我倉庫中的代碼。

三叔
三叔

全部回覆 (4)
黄舟

是這樣的,這個應該分開來解釋。

這個pull指的是權限主體的操作。你提交了程式碼,但是你沒有操作上游repo的權限,你需要上游repo的主人review你的程式碼,然後把你的程式碼修改pull到他的repo中去,這是對於pull的解釋。

而request則指的是啟動主體的操作。也就是說,上游repo的主人雖然有repo的控制權,可以把你的程式碼更改pull到他自己的repo裡,但他不會主動去pull。而是需要你(發起主體)向上游repo的主人提交申請,也就是request,上游repo的主人才會去回應你的request,也就是執行你所說的review和pull的過程。

所以,pull request的理解方法是:一個通知上游repo所有者拉取代碼(pull)請求(request)

在英文中,request一般指的是提交一個申請,需要對方對申請給予答覆的。而request之前的修飾詞,則是答覆方的動作,當然,中文中也是一樣。例如“入團申請”,你提交申請之後,需要對方允許你入團你才算是團員。所以,入團的動作不是你主動做的,而是由審核的人把你的名字加上去才算「入團」。在同理「pull request」中,request是你提交的,而pull則是對方做的事情。

    大家讲道理

    換一個寫法,xxx request可以寫成 "request for xxx",這樣應該會好懂一些。

    括號中的someone代表省略的部分。

    request (someone) for pushpush的執行者是 "someone",因此這個 "someone" 就是你,因為是你push程式碼。如果是request (someone) for pull,那麼這個pull執行者就是程式碼庫的擁有者,因此就是你請求別人pull。顯然是後者更符合實際情況。

      为情所困

      主動被動你已經分清楚了。

      那麼其實問題是,pull request就是你請求上游倉庫來拉取你的程式碼。而如果用push request就是你force推送程式碼到上游倉庫。

      其實這裡push和pull並不是說這件事是你主動做的還是被動做的,而是指你的程式碼是你主動push上去的,還是你的程式碼被別人pull走的。

        为情所困

        如果用gitlab。那麼它的merge request 你應該容易理解的多

          最新下載
          更多>
          網站特效
          網站源碼
          網站素材
          前端模板
          關於我們 免責聲明 Sitemap
          PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!