以下のような素晴らしい tweet を見かけた。
ところが、
このため、commit の差分表示した際 ipynb の差分がファイル全体となり局所的な変更点を追跡出来ない状態だった。
ところが、
- GitHub / dbkk / docx-researchmap
このため、commit の差分表示した際 ipynb の差分がファイル全体となり局所的な変更点を追跡出来ない状態だった。
これは単純に Cygwin 上に導入した Jupyter Notebook で .ipynb を開いてそのまま上書き保存すれば改行の入った形式になり差分追跡可能になった。
元の .ipynb がなぜ改行のないフォーマットで保存されているのかは原因不明。
とりあえず、うちの Cygwin 上の Jupyter Notebook のバージョンは以下の状態だった。
元の .ipynb がなぜ改行のないフォーマットで保存されているのかは原因不明。
- Google Colaboratory から直接保存したから?
- Jupyter Notebook のバージョン違い?
とりあえず、うちの Cygwin 上の Jupyter Notebook のバージョンは以下の状態だった。
$ pip3 list|grep -i jupyter jupyter 1.0.0 jupyter-client 5.3.1 jupyter-console 6.0.0 jupyter-contrib-core 0.3.3 jupyter-contrib-nbextensions 0.5.1 jupyter-core 4.5.0 jupyter-highlight-selected-word 0.2.0 jupyter-latex-envs 1.4.6 jupyter-nbextensions-configurator 0.4.1
以下の2つのスクリプトをこさえた
まず、
Cygwin の Jupyter Notebook で .ipynb を再保存ししたら以下のようにして、author, committer の情報を維持しながら再コミットしてやる。
あとは、ひたすら、
branch して merge してる部分は 13da1fc で
fc430aa で merge は diff-traceable-ipynb に戻ってから
.ipynb のフォーマット変換が手動なのが地味に辛い所だが、あとは機械作業と言うか、非人間的作業だった。
こういう作業は RPA つぅかマクロ欲しい。
再構築した repos は以下
Network Graph 以下のように見える。
GitHub の revision の Network Graph は committer date で整列される。
committer date を元の commit に揃えたのはこのため。
#!/usr/bin/env bash COMMIT="$(cat commit)" AUTHOR_DATE="$(git log "$COMMIT" -1 --pretty=format:%ai)" AUTHOR="$(git log "$COMMIT" -1 --pretty=format:"%an <%ae>")" COMMITTER_NAME="$(git log "$COMMIT" -1 --pretty=format:"%cn")" COMMITTER_EMAIL="$(git log "$COMMIT" -1 --pretty=format:"%ce")" COMMITTER_DATE="$(git log "$COMMIT" -1 --pretty=format:"%ci")" MSG="$(git log "$COMMIT" -1 --pretty=format:"%B")" GIT_COMMITTER_NAME="$COMMITTER_NAME" \ GIT_COMMITTER_EMAIL="$COMMITTER_EMAIL" \ GIT_COMMITTER_DATE="$COMMITTER_DATE" \ git commit --date "$AUTHOR_DATE" --author "$AUTHOR" -m "$MSG" "$@"
#!/usr/bin/env bash HEAD="$(git log -1 --pretty=format:%H)" git reset --hard "$1" git reset "$HEAD" echo "$1" >commit
まず、
git clone https://github.com/dbkk/docx-researchmap cd docx-researchmap git checkout -b diff-traceable-ipynb 51b837157cc77b0540ef24487423c05b187f5a68として、1st commit の branch を work directory に展開
Cygwin の Jupyter Notebook で .ipynb を再保存ししたら以下のようにして、author, committer の情報を維持しながら再コミットしてやる。
echo 51b837157cc77b0540ef24487423c05b187f5a68 >commit ./recommit.sh --amend
あとは、ひたすら、
./reset.sh 次のコミットID # Jupyter Notebook で .ipynb を再保存 ./recommit.sh -aの繰り返し
branch して merge してる部分は 13da1fc で
git checkout -b diff-traceable-ipynb2とか枝を作ってから上記の作業を繰り返し、
fc430aa で merge は diff-traceable-ipynb に戻ってから
git merge diff-traceable-ipynb2 echo fc430aa9c9e8e48becda97adbfce7cb95b6c96c6 >commit ./recommit.sh --amendのように、一旦 merge したところに、元の commit の情報を --amend で上書きしてた。
.ipynb のフォーマット変換が手動なのが地味に辛い所だが、あとは機械作業と言うか、非人間的作業だった。
こういう作業は RPA つぅかマクロ欲しい。
再構築した repos は以下
- GitHub / kou1okada / docx-researchmap
Network Graph 以下のように見える。
- GitHub / dbkk / docx-researchmap / Network graph
GitHub の revision の Network Graph は committer date で整列される。
committer date を元の commit に揃えたのはこのため。
タグ
コメントをかく