衝突

概覽

Nextcloud 桌面客戶端會上傳近端更改並下載遠端更改。當檔案在近端和遠端之間的同步過程中同時發生變更時,客戶端無法自行解決此問題。它會創建一個衝突檔案以保存近端版本,下載遠端版本,並通知用戶發生了需要處理的衝突。

範例

假設在您的同步資料夾中有一個名為 mydata.txt 的檔案。它一段時間沒有變更,並且近端和遠端都包含文本 "contents"。現在,幾乎在同一時間,您將其近端更新為 "local contents",而伺服器上的檔案被其他人更新為 "remote contents"。

當您嘗試上傳近端更新時,桌面客戶端會注意到伺服器版本也已更新。它會創建一個衝突,您現在在近端計算機上將會有兩個檔案:

  • mydata.txt 包含 "remote contents"

  • mydata (conflicted copy 2018-04-10 093612).txt 包含 "local contents"

在這種情況下,檔案 mydata.txt 擁有遠端更改(並將在有進一步的遠端更改時繼續更新),但您的近端調整尚未發送到伺服器(除非伺服器啟用衝突上傳,請參見下文)。

桌面客戶端通過系統通知、系統托盤圖示和帳戶設置窗口中的黃色 "未解決衝突" 徽章通知您此情況。點擊此徽章會顯示一個包含未解決衝突的清單,點擊其中一個會打開一個檔案管理器窗口,指向相關檔案。

要解決這個衝突,打開這兩個檔案,比較差異,並在適用的情況下將您的本地更改從 "conflicted copy" 檔案複製到基檔。以這個範例為例,您可以將 mydata.txt 更改為 "local and remote contents" 並刪除名稱中帶有 "conflicted copy" 的檔案。這樣,衝突就解決了。

上傳衝突(實驗性)

預設情況下,衝突檔案(名稱中帶有 "conflicted copy" 的檔案,包含您的本地衝突更改)不會上傳到伺服器。這樣設計的想法是,您作為變更的作者,是解決衝突的最佳人選,將衝突顯示給其他用戶可能會造成混淆。

然而,在某些情況下,上傳這些衝突的更改是非常合理的,這樣即使衝突不會立即解決,近端工作也能變得可見。

未來可能會有一個全伺服器的開關來控制這種行為。目前可以通過設置環境變數 OWNCLOUD_UPLOAD_CONFLICT_FILES=1 來進行測試。