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()