Mercurial ReviewBoard и пост-ревью

Итак, вот история, я установил обзорную доску в среде Linux, я все настроил, установил пост-обзор, и он работает...

Что не работает, так это репозиторий. Наш репозиторий в какой-то момент был перенесен с SVN на mercurial, затем было сделано много грубого управления файлами, например перемещение файлов без hg move. Итак, что я хотел, так это запустить скрипт, который собирал бы и публиковал обзоры для каждого cset, содержащего более двух родителей (каждый cset, который был объединен с веткой по умолчанию), и сравнивал его с предыдущей ревизией ветки по умолчанию, чтобы увидеть, какие катастрофические изменения произошли у моих коллег-коллег. сделано по коду. Что-то вроде книги по истории и, конечно же, запланировать задание для хранения новых запросов на проверку, которые будут сделаны в будущем.

В любом случае пост-ревью в 95% случаев выдает мне ошибку 207 о том, что тот или иной файл не найден (из-за упомянутого выше неправильного использования hg). Излишне говорить, что это один большой репозиторий, учитывая, что он ежедневно синхронизируется с 8 другими репозиториями.

Может быть, есть какой-то обходной путь, позволяющий пропустить отсутствующие различия файлов и просто использовать то, что было получено после проверки, или smt?

Целый день читал всякие тикеты... пока ничего :(

Пожалуйста помоги...

p.s.

>>> Attempting to create review request on https: //internal.rix.com/hg/project/ for None
>>> HTTP POSTing to http: //localhost/api/review-requests/ {'repository': 'https: //internal.rix.com/hg/project/'}
>>> Review request created
>>> Uploading diff, size: 29809661
>>> HTTP POSTing to http: //localhost/api/review-requests/108/diffs/ {}
>>> Got API Error 207 (HTTP code 400): The file was not found in the repository
>>> Error data: {u'stat': u'fail', u'file': u'.hgignore', u'err': {u'msg': u'The file was not found in the repository', u'code': 207}, u'revision': u'd31d6b626628'}

".hgignore" file not found. The 26652 cset has 2 parents, it was a result of a very big merge into default branch. Actual hg diff -r 26652 -r 26651; produces: 

diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -1,39 +1,44 @@
-syntax: re
-/target$
-/lib$
-/bin$
-.settings
-.classpath
-.metadata
-.project
-.iml
... and so on for 400k lines

person Xeperis    schedule 28.06.2012    source источник
comment
Вы используете --revision-range? Это хорошо работает для меня.   -  person Ringding    schedule 29.06.2012
comment
Да, я использую --revision-range. Дело в том, что различия генерируются инструментом пост-обзора, точнее hg diff -r 26652 -r 26651 генерирует различия, но когда они загружаются на обзорную доску через файл web_api, не найдено исключение. Я нашел некоторые диапазоны, которые работают, но в основном он просто тормозит на других диапазонах.   -  person Xeperis    schedule 29.06.2012
comment
Но вы понимаете, что начальная ревизия, переданная --revision-range, должна существовать в вышестоящем/официальном репозитории?   -  person Ringding    schedule 30.06.2012
comment
Да, это было обновление репозитория клонов по умолчанию, и ничего не менялось, просто post-review --revision... на мой взгляд, все законно: / если я не понимаю, как работают эти инструменты :)   -  person Xeperis    schedule 03.07.2012


Ответы (2)


У меня была та же проблема, и, похоже, в нашем случае это было связано с обновлением репозитория на стороне сервера до определенной версии.

Сброс репозитория на стороне сервера в «голый» репозиторий решил эту проблему для нас.

(Я сделал «hg clone -U repo newrepo», «mv repo repo-old», «mv newrepo repo».)

person Fredrik Håård    schedule 12.11.2012
comment
Какая версия hg вызвала вашу проблему? - person Warren P; 18.06.2013

Я думаю, что точечный файл является причиной ошибки 207 в сообщении на ReviewBoard.

В моем случае ошибка возникает, когда файл '.hgignore' изменяется в одном из коммитов. Например, репозиторий с одним локальным (состояние «черновик») коммитом с измененными файлами «.hgignore» и «another.cpp». Я запускаю «hg postreview» (или «hg postreview --id 1234» позже) и получаю сообщение об ошибке.

Далее: я разделяю фиксацию и оставляю измененным только обычный файл, и эта фиксация публикуется нормально.

person Iracly Kvaratskhelia    schedule 18.09.2015