Используйте Mercurial API для получения изменений в репозитории для заданного набора изменений

StackOverflow https://stackoverflow.com/questions/2352129

Вопрос

Как я могу использовать Mercurial API для определения изменений, внесенных в репозиторий для каждого набора изменений?Я могу получить список файлов, относящихся к определенной версии, но не могу понять, как узнать, что случилось с этим файлом.

Как я могу ответить на эти вопросы о каждом файле в наборе изменений:

  • Это было добавлено?
  • Оно было удалено?
  • Было ли оно изменено?

Есть ли в контексте файла атрибут, который сообщит мне об этом (если да, то я не могу его найти), или есть способы выяснить это другими способами?

Вот мой код:

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))
Это было полезно?

Решение

localrepo.status() может принимать контексты в качестве аргумента (node1 и node2).

Видеть http://hg.intevation.org/mercurial/crew/file/6505773080e4/mercurial/localrepo.py#l973

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top