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