Damit mir das nicht mehr passiert habe ich mir mal einen kleinen hook für mercurial zusammen gezimmert.
Einfach das folgende Skript irgendwo auf der Platte parken:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
def preupdate(ui, repo, **kwargs):
basepath = repo.origroot
rev = kwargs['parent1']
node = repo.changelog.lookup(rev)
_,_,_,files,_,_ = repo.changelog.read(node)
for file in files:
if os.path.splitext(file)[1] != '.fbz6':
continue
fb_file = os.path.join(basepath, file)
fb_lockfile = os.path.splitext(fb_file)[0] + '.fb6lck'
if os.path.exists(fb_lockfile):
ui.write('Fehler: Die Finalbuilder-Datei\n%s\nsoll geändert werden, ist aber noch gelockt.\nSchließen sie Finalbuilder um das Update durchzuführen.\n' % fb_file)
ui.write('(Hinweis: Wenn sie (wirklich...) keinen Finalbuilder mehr geöffnet haben,\nsollten sie die lock-datei löschen.\n diese findet sich unter:\n%s)\n' % fb_lockfile)
return True
return False
Diesen hook dann noch in mercurial einbauen, indem die globale mercurial.ini (bei mir: c:\users\nils\mercurial.ini) mit einem editor geöffnet wird und folgende Zeilen ergänzen:
[hooks] preupdate.finalbuilder = python:C:\wo\das\skript\liegt.py:preupdate
Mehr info's über mercurial-hooks gib es im mercurial Buch, Kap. 10.
Hinweis: Zur Ausführung dieses hooks muss kein python extra installiert werden, der hook wird einfach „direkt“ in mercurial ausgeführt. Mehr dazu gibt es im mercurial Buch.


