Use a API Mercurial para obter alterações em um repositório para uma determinada mudança
-
23-09-2019 - |
Pergunta
Como posso usar a API mercurial para determinar as alterações feitas em um repositório para cada alteração? Sou capaz de obter uma lista de arquivos relevantes para uma revisão específica, mas não consigo descobrir como saber o que aconteceu com esse arquivo.
Como posso responder a essas perguntas sobre cada arquivo em uma troca:
- Foi adicionado?
- Foi excluído?
- Foi modificado?
Existe um atributo no contexto do arquivo que me dirá isso (se assim for, não consigo encontrá -lo), ou há maneiras de descobrir isso por outros meios?
Aqui está o meu código:
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))
Solução
localrepo.status()
pode tomar contextos como argumento (node1
e node2
).
Ver http://hg.intevation.org/mercurial/crew/file/6505773080e4/mercurial/localrepo.py#l973
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow