2017-01-21 14 views
1

git-scm позволяет вам переименовывать на лету файлы, хранящиеся в одном хранилище (например, git diff --find-renames).определяют размерность файлов между несколькими наборами файлов по 25 тыс. Каждый

Что делать, если у меня около десятка наборов файлов (например, всего около 10 наборов (которые могут быть независимыми ветвями некоторого некоторого программного обеспечения, например, * BSD)), причем около 25 тыс. Файлов в каждом наборе. (Каждый набор может обновляться ежедневно, и представляет собой проверку без истории.)

Учитывая файл из один набор, я хотел бы знать, что это, вероятно, предка или потомка файл (или файлы) в: другой номер. (Обратите внимание, что сам git, таким образом, вообще не участвует, кроме как проиллюстрировать концепцию.)

ответ

1

Употребление git действительно может иметь смысл здесь. Например, зафиксируйте каждый файл как отдельную ветвь репозитория. Затем вы можете сделать что-то вроде:

git diff -C --diff-filter=RC --name-status proj2..proj1 

Какой будет производить вывод, как:

R075  file2  file1 

Если file2 в proj2 составляет 75% похожа на file1 в proj1.

+0

Знаете ли вы, действительно ли это будет работать, если нет эффективного общего предка для каждой ветви, кроме просто пустого пространства? (Например, FreeBSD не основан на OpenBSD, и ни один из них не является OpenBSD на основе FreeBSD.) – cnst

+0

есть ли у вас дополнительные предложения? я получаю много ложноположительных отчетов; я бы хотел убедиться, что нет абсолютно никаких ложных срабатываний, например, либо имена файлов должны быть достаточно уникальными между двумя проектами и соответствовать друг другу, либо должно быть очевидно много сходства. – cnst

+0

Я думаю, я мог бы просто выполнить сопоставление только по именам файлов; но спасибо за предложение git! Кстати, я также должен был выполнить 'git config --local diff.renamelimit 99999', чтобы он работал. – cnst