Когда именно возникла проблема? Когда они зафиксировали файл изначально или когда его отправили в другое место? Если у вас есть промежуточное репо, к которому все подталкивают, вы можете внедрить хук обновления, чтобы сканировать изменяющиеся ссылки на большие файлы, а также проверять другие разрешения и т. Д.
Очень пример грубо и готово:
git --no-pager log --pretty=oneline --name-status $2..$3 -- | \
perl -MGit -lne 'if (/^[0-9a-f]{40}/) { ($rev, $message) = split(/\s+/, $_, 2) }
else { ($action, $file) = split(/\s+/, $_, 2); next unless $action eq "A";
$filesize = Git::command_oneline("cat-file", "-s", "$rev:$file");
print "$rev added $file ($filesize bytes)"; die "$file too big" if ($filesize > 1024*1024*1024) }';
(просто покажу, все можно сделать с помощью однострочного Perl, хотя это может занять несколько строк;))
Вызывается так, как вызывается $ GIT_DIR / hooks / update (аргументы: ref-name, old-rev, new-rev; например, «refs /heads / master master ~ 2 master»), это покажет добавленные файлы и прервите, если добавлено, что является слишком большим.
Заметьте, что я бы сказал, что если вы собираетесь в полицию такого рода вещи, вам нужен централизованный пункт, чтобы сделать это. Если вы доверяете своей команде просто обмениваться изменениями друг с другом, вы должны доверять им, чтобы узнать, что добавление гигантских двоичных файлов - это плохо.