Utilisez API Mercurial pour obtenir les modifications à un dépôt pour une donnée Changeset
-
23-09-2019 - |
Question
Comment puis-je utiliser l'API Mercurial pour déterminer les modifications apportées à un référentiel pour chaque changeset? Je suis en mesure d'obtenir une liste des dossiers pertinents à une révision particulière, mais je ne peux pas comprendre comment dire ce qui est arrivé à ce fichier.
Comment puis-je répondre à ces questions sur chaque fichier dans un changeset:
- Était-il ajouté?
- Était-il supprimé?
- Était-il modifié?
Y at-il un attribut dans le contexte de fichier qui va me dire ceci (si oui, je ne le trouve pas), ou là des façons de comprendre cela par d'autres moyens?
Voici mon 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,
})
tmplt = loader.get_template('web/index.html')
return HttpResponse(tmplt.render(c))
La solution
localrepo.status()
peut prendre comme argument des contextes (node1
et node2
).
Voir http://hg.intevation.org /mercurial/crew/file/6505773080e4/mercurial/localrepo.py#l973