2020/SEP/01
更新履歴
日付
変更内容 2020/AUG/30
新規作成 2020/SEP/01
2つのファイルツリー間の同期 (push, pull)
更新
簡易なファイルツリーのバージョン管理ツール(gitの真似事) 2020春
簡易なおれおれマークダウン 2019秋の使用例 に続いて、こちらも使用例を中心に使い方を記録しておきます。
kon_pageのpythonモジュールのインストール の手順になります。
上記ページのエイリアス設定 kon_page.rc の中にもありますが、
$ alias fsyn='python -m fsyn'
を設定しておくようにします。
既存のファイルツリーをfsynで管理して扱えるようにします。
管理したいディレクトリの直下で fsyn create を実行します。
管理したいディレクトリパス + '.fsyn' というパスのディレクトリが生成されます。
例えば /tmp/hoge/ 以下を管理したい場合
cd /tmp/hoge $ fsyn create create /private/tmp/hoge.fsyn $ find ../hoge.fsyn ../hoge.fsyn ../hoge.fsyn/curr ../hoge.fsyn/org ../hoge.fsyn/org/link ../hoge.fsyn/org/snap ../hoge.fsyn/org/update.tgz
管理しているディレクトリの直下で fsyn check を実行します。
変更があったファイルが表示されます。
例えば
$ cd /tmp/hoge $ mkdir -p foo/bar $ echo hoge > foo/bar/hoge.txt $ rm kon_ut/wx_ut.py-old
の変更をした場合
$ cd /tmp/hoge $ fsyn check org dirty add: foo/bar/hoge.txt rm: kon_ut/wx_ut.py-old
管理しているディレクトリの直下で fsyn commit を実行します。
コミットIDが表示されます。
$ cd /tmp/hoge $ fsyn commit commit 2020-08-30_17.32.12
管理しているディレクトリの直下で fsyn curr を実行すると、 現在のコミットIDが表示されます。
$ cd /tmp/hoge $ fsyn curr 2020-08-30_17.32.12
管理しているディレクトリの直下で fsyn log を実行すると、 現在のコミットIDからcreateした時点のorgまで遡って表示されます。
$ cd /tmp/hoge $ fsyn log 2020-08-30_17.32.12 org
fsynに続き、次のコマンドが使用可能です。
コマンド | 説明 |
---|---|
ids | 全てのidを表示します |
tails | 全ての枝の最新(末端)のidを表示します |
ctails | カレントidの子孫の全ての枝の最新(末端)のidを表示します |
latest | 全てのidの中の最新のidを表示します |
clatest | カレントidの子孫のidの中の最新のidを表示します |
prev | カレントidの1つ古い(親)のidを表示します |
next | カレントidの1つ新しい(子)のidを表示します |
管理しているディレクトリの直下で fsyn checkout コミットID を実行すると、 ファイルツリーを指定のコミットIDの状態にします。
$ cd /tmp/hoge $ fsyn checkout org checkout org $ ls foo ls: foo: No such file or directory $ ls kon_ut/wx_ut.py-old kon_ut/wx_ut.py-old $ fsyn checkout 2020-08-30_17.32.12 checkout 2020-08-30_17.32.12 $ find foo foo foo/bar foo/bar/hoge.txt $ ls kon_ut/wx_ut.py-old ls: kon_ut/wx_ut.py-old: No such file or directory
コミットIDの指定には次のエイリアスが使用可能です。
エイリアス | 説明 |
---|---|
latest | 全てのidの中の最新のid |
clatest | カレントidの子孫のidの中の最新のid |
prev | カレントidの1つ古い(親)のid |
next | カレントidの1つ新しい(子)のid (複数候補あり) |
tail | 全ての枝の最新(末端)のid (複数候補あり) |
ctail | カレントidの子孫の全ての枝の最新(末端)のid (複数候補あり) |
他の場所に管理しているファイルツリーをコピーします。
コピー先の場所から
$ fsyn clone コピー元の.fsyn ディレクトリパス
を実行します。
コピー先のコミットIDは最新のコミットIDになります。
例えば /tmp/hoge の hoge を /tmp/backup にコピーしたい場合
コピー元の.fsyn ディレクトリパスは /tmp/hoge.fsyn
hoge を配置したいコピー先の場所は /tmp/backup
$ mkdir /tmp/backup $ cd /tmp/backup $ fsyn clone /tmp/hoge.fsyn checkout 2020-08-30_17.32.12 $ ls hoge hoge.fsyn $ cd hoge $ fsyn curr 2020-08-30_17.32.12
コミットを追加したファイルツリーから、他のファイルツリーの場所を指定して、 fsyn push を実行します。
$ cd /tmp/hoge $ echo 1179 > foo/bar/mbs.txt $ fsyn commit commit 2020-08-30_18.09.16
push先には次のバージョンがコピーされます
push先のカレントのバージョンはそのままです。
$ fsyn push /tmp/backup
$ cd /tmp/backup/hoge $ fsyn ids 2020-08-30_18.09.16 2020-08-30_17.32.12 org $ fsyn curr 2020-08-30_17.32.12
push先でcheckoutして最新のバージョンにします。
$ fsyn checkout latest checkout 2020-08-30_18.09.16 $ cat foo/bar/mbs.txt 1179
コミットが追加されているファイルツリーの場所を指定して、 fsyn pull を実行します。
$ cd /tmp/hoge $ echo 1314 > foo/bar/obc.txt $ fsyn commit commit 2020-08-30_18.12.45
$ cd /tmp/backup/hoge $ fsyn pull /tmp checkout 2020-08-30_18.12.45 $ fsyn ids 2020-08-30_18.12.45 2020-08-30_18.09.16 2020-08-30_17.32.12 org $ cat foo/bar/obc.txt 1314
pullでは、カレントバージョンからの新しい子孫のバージョンを全て取り込みます。
pullで他の xxx.fsyn/ の情報を引っ張ってきたあと、 内部的にcheckoutが実行され、 カレントidの子孫のidの中の最新のid の状態 (clatest) になります。
工事中