Пословное обвинение / аннотирование в управлении версиями?
Можно ли реконструировать пословную историю в управлении версиями? В идеале я хотел бы сделать что-то вроде: 1) я указываю диапазон интересующих строк, 2) чтобы программа вычисляла соответствующие номера строк в предыдущих версиях, так как код часто перемещался вверх или вниз между версиями (потенциально ограничивая диапазон версий, скажем, начиная с редакции 19 или неделю назад), 3) распечатывать историю по словам, либо версии тех групп слов, которые были изменены в последний раз, либо авторов, по которым группы слов были изменены. Так что вроде как svn blame
или же git blame
на уровне слова.
В противном случае, есть ли инструменты, которые могут сделать № 1 и № 2 выше? То есть: 1) я указываю диапазон интересующих линий, 2) программа вычисляет соответствующие номера строк в предыдущих версиях, 3) программа распечатывает историю этих строк (когда произошли изменения).
Мне бы очень помогли svn или git.
1 ответ
Я искал что-то вроде этого и в итоге взломал свое собственное решение. Вы можете найти это здесь:
https://github.com/d33tah/wordblame
По сути, он создает новый каталог репозитория, в котором все пробелы заменяются новой строкой и уникальной строкой, сигнализирующей о наличии пробела. Затем выполняется "мерзавец" и результат интерпретируется заново.
Я сделал инструмент под названием git-word-blame
чтобы решить именно эту проблему:
# setup
> virtualenv -p python3 venv
> source venv/bin/activate
> pip install git-word-blame
# usage
> git word-blame your-file
> firefox /tmp/git-word-blame/word-blame-by-commit.html
Я должен выглядеть так: