.*
(или (.)*
, который идентичен по значению) соответствует самой длинной последовательности символов, кроме новой строки. Flex позволяет заключать символы в кавычки, заключая их в двойные кавычки ("//"
) или используя обратную косую черту (\"
). Таким образом, четыре шаблона соответствуют самой длинной последовательности в текущей строке, состоящей из символов
От /*
до */
От [ 116] до конца строки
С "
до "
С '
до `` «'.
Только второй будет работать как задумано. Все остальные совпадут слишком сильно, если в одной строке два совпадения, а первое не будет соответствовать многострочным комментариям.
Существует не так много, чтобы согнуть шаблоны, кроме основ. Все синтаксисы паттернов описаны в очень короткой главе руководства по флексам .
Типичный способ сделать это - прочитать информацию о пароле из файла конфигурации. Если ваш файл конфигурации называется foobar.config
, то вы должны зафиксировать файл с именем foobar.config.example
в репозитории, содержащий образцы данных. Чтобы запустить вашу программу, вы должны создать локальный (не отслеживаемый) файл с именем foobar.config
с данными вашего реального пароля.
Чтобы отфильтровать существующий пароль из предыдущих коммитов, см. Страницу справки GitHub на Удаление конфиденциальных данных .
Доверяй, но проверяй.
В .gitignore
это исключило бы «безопасный» каталог из репо:
secure/
Но я разделяю @ паранойю Майкла Поттера . Итак, чтобы проверить .gitignore, вот модульный тест Python , который вызовет клаксон, если этот «безопасный» каталог когда-нибудь будет проверен. И чтобы проверить проверку, проверен законный каталог тоже:
def test_github_not_getting_credentials(self):
safety_url = 'https://github.com/BobStein/fliki/tree/master/static'
danger_url = 'https://github.com/BobStein/fliki/tree/master/secure'
self.assertEqual(200, urllib.request.urlopen(safety_url).status)
with self.assertRaises(urllib.error.HTTPError):
urllib.request.urlopen(danger_url)