Скрыть строку в файле перед git commit - PullRequest
5 голосов
/ 19 февраля 2010

Я бы хотел, чтобы конкретная строка в конкретном файле была скрыта каждый раз, когда я фиксирую изменения в этом файле.

На самом деле, у меня есть URL в файле, который не должен быть публичным в удаленном репозитории. Есть ли способ скрыть это, используя хуки pre-commit и post-commit или что-то подобное?

В настоящее время я работаю с git-репозиторием, но было бы неплохо узнать, как это сделать с помощью SVN.

Спасибо, Симау

Ответы [ 2 ]

7 голосов
/ 19 февраля 2010

Вы можете хранить эту строку в отдельном файле (например, в файле ресурсов, если ваша среда это поддерживает) и не ставить этот файл под контроль версий.

4 голосов
/ 19 февраля 2010

Если вы действительно хотите, чтобы этот файл находился под управлением версией, используйте драйвер фильтра атрибутов git (см. Также GitPro book ).

Драйвер фильтра состоит из команды clean и команды smudge, каждую из которых можно не указывать.
При checkout, когда указана команда smudge, команда получает объект BLOB со стандартного ввода, а его стандартный вывод используется для обновления файла рабочего дерева.
Аналогично, команда clean используется для преобразования содержимого файла рабочего дерева при регистрации.

Таким образом, скрипт ( частная версия, только в вашем репо, не управляемый Git ), на который ссылается smudge, может заменить закодированный URL, в то время как чистый скрипт восстановит его содержимое в закодированный URL.
Публичная версия одного и того же скрипта, управляемая git и распространяемая повсюду, ничего не сделает ... ничего и запутывает URL.

alt text

...