#git #amazon-web-services #aws-codecommit #git-filter-repo
#git #amazon-web-services #aws-codecommit #git-filter-repo
Вопрос:
Я обнаружил скрипт, в котором был пароль, и он был много лет назад передан для управления версиями в AWS CodeCommit. С тех пор был создан совершенно новый скрипт, который выполняет ту же работу без пароля, поэтому все, что мне нужно было сделать для «очистки», это сделать так, чтобы файл выглядел так, как будто его никогда не существовало, сохраняя при этом остальную историю репозиториев моей команды.
GitHub написал официальную документацию «Удаление конфиденциальных данных из репозитория», в которой разъясняется, какие данные вы не можете самостоятельно удалить из GitHub, но я не могу найти такую документацию в AWS CodeCommit.
Я решил попробовать использовать инструкции GitHub против CodeCommit в любом случае и посмотреть, как все прошло. Все прошло не слишком хорошо.
- Я полностью удалил
c:my_repo
их со своего жесткого диска и повторно клонировал из облака (заменивc:my_repo.gitconfig
из резервной копии). MINGW64:/c/my_repo
Я побежал.git filter-repo --invert-paths --path sub_folder/bad_script.java
- В проводнике Windows File Explorer я увидел, что файла больше нет
c:my_reposub_folderbad_script.java
. - В SourceTree, в коммите, который
sub_folder/bad_script.java
был добавлен в репозиторий (назовите его1234567890987654321
), я увидел, что его больше нет в списке добавленных файлов. Отлично! - В веб-консоли AWS CodeCommit я делал заметки о предыдущем состоянии — файл существовал, и в его теле был пароль по адресу:
https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/refs/heads/main/--/sub_folder/bad_script.java?#
https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/commit/1234567890987654321?region=my-region
https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/1234567890987654321/--/sub_folder?region=my-region
https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/0987654321234567890/--/sub_folder?region=my-region
(коммит987654321234567890
был более поздним, который не редактировал файл, но я нашел его таким образом, просмотрев дерево файлов этого коммита).
- Единственное, что я пропустил из инструкций GitHub, — это фиксация
.gitignore
файла перед отправкой, но я не думал, что это будет актуально, поскольку git-filter-repo удалил файл с моего жесткого диска. - После исправления
c:my_repo.gitconfig
, чтобы снова указывать на AWS после того, как git-filter-repo удалил указательMINGW64:/c/my_repo
, я побежалgit push origin --force --all
. - В веб-консоли AWS CodeCommit
https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/refs/heads/main/--/sub_folder/bad_script.java?#
пропал. Я получилPathDoesNotExistException
заголовок сCould not find path sub_folder/bad_script.java;
телом в виде большого красного сообщения об ошибке. - Однако в веб-консоли AWSCodeCommit файл все еще существовал, и в его теле был пароль на оставшиеся три URL-адреса:
https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/commit/1234567890987654321?region=my-region
https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/1234567890987654321/--/sub_folder?region=my-region
https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/0987654321234567890/--/sub_folder?region=my-region
- Я снова полностью удалил
c:my_repo
свой жесткий диск и повторно клонировал его из облака (заменивc:my_repo.gitconfig
из резервной копии), и файлы по-прежнему не отображаются в представлении истории SourceTree, поэтому я… думаете, это может быть просто проблемой AWS?
Кто-нибудь успешно удалил файл из истории CodeCommit? Есть ли шаги, которые мне нужно выполнить с сотрудниками AWS, например, GitHub, упомянутые в их документах для их сервиса? Есть ли что-то лучшее, что я могу сделать с моим подходом к очистке bad_script.java
моей локальной копии репозитория — возможно, какой-то фатальный недостаток в шагах, которые я предпринял?