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