Выяснить 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, если у меня нет функции отрицательного просмотра?