Skip to content

Latest commit

 

History

History
113 lines (80 loc) · 4.54 KB

MAINTENANCE.md

File metadata and controls

113 lines (80 loc) · 4.54 KB

How to maintain this repository

メンテナンスの基本方針

TeX Live and Subversionのsubversionリポジトリのサブセットをgit svnで作成、追従しこちらのgitHubmasterと同期させる。

リポジトリの構成

ローカルに作成する作業用リポジトリのブランチは以下のように構成する。

  1. texlive-gitsvn : TeX Live svn側と直接 git svn で追従する。ローカルで使用しgitHubには公開しない。
  2. texlive-trunk : texlive-gitsvn と内容をcherry pickで完全に同期させる。gitHubにも公開する。
  3. master : texjporg側のmasterブランチ。texlive-trunkと同期させつつ、README.mdなど独自の内容を含む。gitHubに公開する。
  4. その他 : 開発用

texlive-gitsvntexlive-trunk は内容が完全に一致するがコミットハッシュが異なっている状態を維持する。両者はコミットツリー上常に並列であり交差することはない。 texlive-gitsvntexlive-trunk を別のブランチで運用している理由は以下。

  • git svnで生成されるtexlive-gitsvnにおけるコミットハッシュが texlive-trunk と合わなくても問題にならない。
  • git svnで同期する構成物を変更したくなったときに対応しやすい。

リポジトリの運用

ローカルの作業用リポジトリの作成手順

最初に一度実行する必要がある。 また、git svnで同期する構成物を変更する場合、git svn clone--ignore-pathsを更新してやり直す必要がある。

ブランチtexlive-gitsvnの作成

mkdir workXXX
cd workXXX
cp -p hoge/usermap_texlive_svn.txt .
git svn clone svn://tug.org/texlive/trunk/Build -r 61101:HEAD --ignore-paths='^((?!source).*|source/(extra|libs/(freetype|gd|graphite|harfbuzz|lua|poppler|potrace|teckit|xpdf|zziplib)|utils/(a[^c]|[bd-z])|texk/(afm|chk|cjk|det|dtl|dvil|dvipn|dvipo|dvis|gre|gsf|lcd|makei|mus|ps2|psu|tex4|texlive/linked_scripts(?!/(ChangeLog|Makefile.in)).*|ttf|xdv|web2c/(xetexdir|mfluadir|mfluajitdir|alephdir|pdftexdir|luatexdir(?!/luafontloader/ff-config.in).*))))' --authors-file=usermap_texlive_svn.txt
cd Build/
git branch -m master texlive-gitsvn

ブランチtexlive-trunk, masterの作成

git remote add origin [email protected]:texjporg/tex-jp-build.git
git remote -v
git switch -c master origin/master
git switch -c texlive-trunk origin/texlive-trunk
git worktree add ../texlive-gitsvn texlive-gitsvn

リポジトリの同期

定期的にTeX Live svnと同期するための作業。 現在は一週間に一回程度実施している。

cd workXXX/texlive-gitsvn/
git svn fetch

usermap_texlive_svn.txt に記載されていない新しいコミッターの方が入った場合、ここでwaringが出るので usermap_texlive_svn.txt を編集してから上記をやり直す。 編集した場合はmasterブランチの中にある workXXX/Build/usermap_texlive_svn.txt も更新すべし。

git log remotes/git-svn
git log remotes/git-svn --oneline

これを見て前回の最終と今回の最終のコミットハッシュをメモしておく。 例えば ffb1af1b4..d39202e05 だったとする。

cd workXXX/Build/
git switch texlive-trunk
git cherry-pick ffb1af1b4..d39202e05 --allow-empty
git diff texlive-gitsvn

ブランチtexlive-gitsvntexlive-trunk は内容が完全に同じでコミットハッシュだけが異なる状態になっているはず。

git switch master
git remote -v
git fetch
git merge origin/master
git merge texlive-trunk --no-commit

コンフリクトが発生した場合はこの段階で適宜対処する。

git commit

ここでコミットログに TeX Live svn の最終のリビジョンを r61xxx のように追記する。必須ではないと思うが履歴を見るときに役立つことを期待。

git diff texlive-gitsvn

texjporg で追加したファイル以外は完全に同内容になっているはず。

git push origin master
git push origin texlive-trunk

ここで記載した手順は必須でも絶対でもなく、現状こうしているというやり方をメモしたものです。 もっといいやり方や提案等あれば教えてください。

以上。