[Python]mercurialのファイルを(なぜか)タイムスタンプで履歴管理
履歴管理はファイル名に日付を付けるのが基本ですよね。
ということで、mercurialのチェンジセットに含まれているファイルを、日付を付けたファイル名で展開するスクリプトを作りました。レポジトリのディレクトリに移動し、このスクリプトを実行してください。
…ええ、ええ、言いたいことはよーく分かっています。でもですね、なにも言わないでください…
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# This script extracts changed files in changesets with timestamp suffix.
#
# Yes, I know timestamp based history management is not the mercurial way.
# but, but, sigh...
#
# license: new BSD
#
from mercurial import ui
from mercurial import hg
import datetime
import os
MAXAGE = 10 # 展開するチェンジセットの数
FORMAT = "%Y%m%d-%H%M%S"
u = ui.ui()
repo = hg.repository(u, '.')
tip = repo.changectx("tip")
tip_rev = tip.rev()
for i in range(tip_rev, tip_rev - MAXAGE, -1):
ctx = repo.changectx(i)
unix_timestamp = ctx.date()[0]
tz = ctx.date()[1] # currently not used
d = datetime.datetime.fromtimestamp(unix_timestamp)
for filename in ctx.files():
fctx = ctx[filename]
fname = os.path.join(repo.root,
"{0}-{1}".format(filename, d.strftime(FORMAT))
)
try:
f = open(fname, "w")
f.write(fctx.data())
finally:
if f:
f.close()