Use Mercurial API to Get Changes to a Repository For a Given Changeset
How can I use the Mercurial API to determine the changes made to a repository for each changeset? I am able to get a list of files relevant to a particular revision, but I cannot figure out how to tell what happened to that file.
How can I answer these questions about each file in a changeset:
- Was it added?
- Was it deleted?
- Was it modified?
Is there an attribute in the file context that will tell me this (if so, I cannot find it), or there ways to figure this out by other means?
Here is my code:
def index(request):
u = ui.ui()
repo = hg.repository(ui.ui(), '/path/to/repo')
changes = repo.changelog
changesets = []
for change in changes:
ctx = repo.changectx(change)
fileCtxs = []
for aFile in ctx.files():
if aFile in ctx:
for status in repo.status(None, ctx.node()):
# I'm hoping this could return A, M, D, ? etc
fileCtxs.append(status)
changeset = {
'files':ctx.files(),
'rev':str(ctx.rev()),
'desc':ctx.description(),
'user':ctx.user(),
'filectxs':fileCtxs,
}
changesets.append(changeset)
c = Context({
'changesets': changesets,
})
开发者_Python百科 tmplt = loader.get_template('web/index.html')
return HttpResponse(tmplt.render(c))
localrepo.status()
can take contexts as argument (node1
and node2
).
See http://hg.intevation.org/mercurial/crew/file/6505773080e4/mercurial/localrepo.py#l973
精彩评论