diff -r 3dc31476c148 -r 6a830bed4af1 hgkw/kwexpander.py --- a/hgkw/kwexpander.py Tue Dec 19 15:57:03 2006 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -from mercurial.i18n import _ -from mercurial import util -import os.path, re - -def expandkw(ui, repo, rev, cid, candidates, update=False): - '''Expands logged Hg in working directory.''' - - # name of keyword encode filter: - kwencodefilter = 'hgkwencode' - - # update only needs string search for encoded keyword - # as hgkwencode always runs before - kwstr = '$Hg$' - - # pretxncommit looks for both encoded and decoded keywords - re_kw = re.compile(r'\$Hg[^$]*?\$') - - def wwritekw(ui, repo, f, text): - '''Writes text with kwupdates keywords to f in working directory.''' - ui.note(_('expanding keywords in %s\n' % f)) - # backup file, at least when commiting (?) - repo.wfile(f, 'w').write(text) - - # only check files that have hgkwencode assigned as encode filter -# files = [] - # python2.4: files = set() -# for pat, cmd in repo.ui.configitems('encode'): -# if cmd.endswith(kwencodefilter): -# mf = util.matcher(repo.root, '', [pat], [], [])[1] -# for candidate in candidates: -# if mf(candidate) and candidate not in files: -# files.append(candidate) - # python2.4: - # if mf(candidate): files.add(candidate) - -# if not files: # nothing to do -# return False - files = candidates - - user, date = repo.changelog.read(rev)[1:3] - user = util.shortuser(user) - date = util.datestr(date=date, format=util.defaultdateformats[0]) - # %Y-%m-%d %H:%M:%S - - # collect filenames that were changed by hg update - kwupdates = [] - - for f in files: - - text = repo.wfile(f).read() - if not util.binary(text): - - # TODO for update: - # walk back through file history onto last add/modify - # like "hg log -l1 f" - kw = '$Hg: %s,v %s %s %s $' % ( - os.path.basename(f), cid, date, user) - - if update and text.find(kwstr) > -1: - text = text.replace(kwstr, kw) - wwritekw(ui, repo, f, text) - kwupdates.append(f) - - elif not update: - text, kwct = re_kw.subn(kw, text) - if kwct: - wwritekw(ui, repo, f, text) - - if kwupdates: - # cheat hg to believe that updated files were not modified - repo.dirstate.update(kwupdates, 'n')