Выяснить re2 эквивалент для отрицательного просмотра в gitlab

Поэтому, когда мы установили Gitlab, мы настроили некоторые довольно сложные правила push-уведомлений, чтобы разработчики не могли отправлять определенные файлы в репозиторий. Мы только что обновили сервер, и, похоже, они заменили движок Ruby regex на RE2. Конечно, RE2 не поддерживает отрицательный взгляд по философским причинам, поэтому мне нужно выяснить, как заставить это работать на нескольких сотнях проектов gitlab.

Так вот оригинал, ruby, regex

^(?!(?:.*\/)?python\/shim(?:\/|$))(?!(?:.*\/)?src\/test\/resources(?:\/|$))(?!.*gradle-wrapper\.jar$).*\.?:jar|exe|a|ar|cpio|shar|iso|LBR|lbr|mar|sbx|tar|bz2|F|gz|lz|lzma|lzo|rz|sfark|sz|xz|z|Z|7z|s7z|ace|afa|alz|apk|arc|arj|b1|ba|bh|cab|car|cfs|cpt|dar|dd|dgc|dmg|ear|gca|ha|hki|ice|kgb|lzh|lha|lzx|pak|partimg|paq6|paq7|paq8|pea|pim|pit|qda|rar|rk|sda|sea|sen|sfx|shk|sit|sitx|sqx|tar\.gz|tgz|tar\.Z|tar\.bz2|tbz2|tar\.lzma|tlz|uc|uc0|uc2|ucn|ur2|ue2|uca|uha|war|wim|xar|xp3|yz1|zip|zipx|zoo|zpaq|zz|dll)$

Теперь, применительно к тестовому набору

test_fixtures/src/main/resources/windows/python/shim/python26.exe
test_fixtures/src/main/resources/windows/python/shim/python37.exe
hi.jar
hi.zip
/src/main/hi.txt
myproject/src/main/hi.txt
/myproject/src/main/hi.txt
/hi.txt
/gradle/wrapper/gradle-wrapper.jar
/src/test/resources/test.exe
/src/main/resources/test.tar.gz

будет соответствовать

hi.jar
hi.zip
/src/main/resources/test.tar.gz

файл gradle-wrapper.jar будет проходить нормально, потому что это в папке 'gradle/wrapper'. Как test.exe хорошо, потому что его в src/test/resources папку, но если вы переместите ее в корень проекта, она больше не будет разрешена.

Рубиновая версия этого прекрасно работает. Но как в мире я могу переопределить это в re2, если у меня нет функции отрицательного просмотра?

0 ответов

Другие вопросы по тегам