2010-02-28 7 views
3

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

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

  • Was добавил он?
  • Удалено?
  • Был ли он изменен?

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

Вот мой код:

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)) 
+0

мне очень интересно, что вы строите с этим кодом? – tonfa

ответ

4

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

http://hg.intevation.org/mercurial/crew/file/6505773080e4/mercurial/localrepo.py#l973 См

+0

Я дал эту попытку, и все, что я верну, - это списки файлов, которые я, похоже, не могу понять. Они не являются файлами, которые были изменены, и нет никакой измененной, добавленной, удаленной, удаленной, неизвестной, проигнорированной или чистой информации. – macinjosh

+0

Хорошо, я думаю, что понял. Каждый набор возвращаемых списков соответствует другому статусу. Благодаря! – macinjosh

+0

Возвращаемые значения: «изменены, добавлены, удалены, удалены, неизвестны, проигнорированы, очищены» – tonfa