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))
Foi útil?

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
scroll top