簡體   English   中英

GitHub客戶端作為漸進式Web應用程序:如何處理提交和推送?

[英]GitHub client as a Progressive Web App: how to deal with commits and pushes?

我之所以問這個問題,是因為我想全力以赴,如何處理此類問題並尋求社區的建議。 對於不認識的人,PWA可以在脫機時工作,並使用ServiceWorkers來處理請求並進行后台同步(以及其他一些工作)。

我想構建一個將成為GitHub客戶端的PWA,並希望通過其功能實現提交和推送到存儲庫的功能。 從我的角度來看,進行提交是簡單明了的,並且不會造成任何問題,因為對遠程設備沒有任何更改。

但是,進行推送時可能會出現一些問題。 用戶可能在線並且直接進行推送。 如果他不在線,則ServiceWorker會將其保留在后台,並且當有連接時,應進行推送。

如果當前用戶處於脫機狀態時其他用戶進行了推送怎么辦? Git版本控制應該處理的情況? 我的想法在任何地方都有缺陷嗎? 通過使用SW來避免遠程出現問題是否可行?

提前致謝。

對於git來說不是缺陷。 但是所有與本地計算機不同的遠程存儲庫的情況。

本地存儲庫中的用戶不應該總是處於脫機狀態(他們需要與他人合作並為遠程存儲庫做出貢獻)。 當離線用戶在線時,他們應拉入並推送到遠程倉庫(更新本地倉庫和貢獻者到遠程倉庫)。

針對這種情況的詳細步驟如下:

假設主分支原始上的提交歷史如下:

…---A---B---C master, origin/master 

並且離線工作的用戶提交本地更改(提交D和提交E ),然后提交本地提交歷史記錄,如下所示:

…---A---B---C---D---E master
            |
       origin/master

當另一個用戶推送更改時,將F提交並將G提交到遠程倉庫。

現在,如果離線用戶在線,如果他/她將更改直接推送到遠程遠程,則git將拒絕推送,因為遠程回購具有本地回購所沒有的新更改,並提示首先使用git pull

通常,有兩種方法可以從遠程提取更改:

  1. 以默認方式拉

    在執行git pull origin master ,提交歷史將是:

     …---A---B---C---D---E---M master \\ / F-------G origin/master 

    它將origin/master合並到本地master ,而提交M是合並提交。

  2. 拉底

    在執行命令git pull origin master --rebase ,它將把本地更改重新設置在origin/master的頂部。 提交歷史將為:

     …---A---B---C---F---G---D'---E' master | origin/master 

因此,即使用戶處於脫機狀態,他也只能在本地存儲庫上工作。 當用戶再次聯機時,他/她可以按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM