Pyslvs v0.9 大更新進度

  • 版次管理功能雛形

版次管理功能雛形

花了許久時間做出版次管理的介面,目前只有基本框架,分支功能還沒做好。

Pyslvs 的檔案格式為副檔名為「.pyslvs」的 SQL 資料庫。

下圖的 commit #1 只有增加主動桿,commit #2 完成四連桿。

在每次使用「Save」功能時,會視為一次「commit」,此時便會將機構狀態路徑數據尺寸合成結果三筆資料轉為字串,透過壓縮成 byte 格式後存入資料庫的一行欄位中,三筆資料都經過測試可以回歸上一個版本。

壓縮功能是透過 zlib 模組達成,使用 peewee 的 BlobField 格式,可以用來處理資料庫中的 list、dict:

import zlib
compress = lambda obj: zlib.compress(bytes(repr(obj), encoding="utf8"), 5)
decompress = lambda obj: eval(zlib.decompress(obj).decode())

每個 commit 還包含兩個外來鍵標註屬性,分別為「Author」和「Branch」標示作者和所屬分支。而 commit 的從屬關聯是參照「Previous」自我參照的外來鍵決定。

  • 畫面中最上方的表格為所有提交的清單,可以透過上方的搜尋列過濾「Description」和「Author」欄位的內容,取消搜尋只要清空搜尋列即可。
  • 若要載入過去的提交紀錄,可以按下表格左側的按鈕,不過需要注意是否有變更尚未儲存。
  • 進行提交時,必須輸入作者名稱(預設為 Anonymous)、說明文字,若是忘記輸入會彈出 QInputDialog 詢問。
  • 使用「Save」功能或「Commit」按鈕儲存;亦可使用「New Branch」按鈕將編輯的內容儲存到新分支中。
  • 使用「Stash」按鈕可以捨棄目前所有變更,相當於載入上次最新的提交。

目前的基本功能載入都滿快的,除了連接到新資料庫的時候 peewee 會頓一下。


Comments

comments powered by Disqus