-
Committer:
NamNguyen
-
Date:
2007-08-01 06:14:14 UTC
-
mto:
(2789.1.1 ianc-integration)
-
mto:
This revision was merged to the branch mainline in
revision
2790.
-
Revision ID:
namnguyen-20070801061414-u0tzrfgcz6z604lz
``Branch.hooks`` now supports ``pre_commit`` hook.
The hook's signature is
::
  hook(local, master, old_revno, old_revid, new_revno, new_revid,
       deleted_paths, added_paths, future_revision_tree)
``deleted_paths`` and ``added_paths`` are lists of paths. Renamed paths are
recorded in both ``deleted_paths`` and ``added_paths`` (i.e. deleted then
added).
``future_revision_tree`` is obtained from ``CommitBuilder.revision_tree``
to save hooks from getting it from the branch again.
For example, hooks can get a file:
::
  for path in added_paths:
      id = future_revision_tree.path2id(path)
      if future_revision_tree.kind(id) == 'file':
          file = future_revision_tree.get_file(id)
          ...
or export a tree and do ``make check`` or similar
::
  import bzrlib.export
  bzrlib.export.export(future_revision_tree, 'tmp_space')
If the commit is to be rejected, hooks should raise an ``Exception``.