Для этого очень специфического c случая вы можете установить свой чистый фильтр на заменить строку на стандартную строку по умолчанию . То есть вы читаете входящий поток данных XML, находите один элемент, заменяете его и генерируете новый поток (либо сгенерированный как полностью новый XML, либо «на лету» как go).
Хотя вся эта идея плохая. Это означает, что личная конфигурация пользователя хранится в существующем рабочем дереве в файле, который Git будет перезаписывать . Другими словами, существуют ситуации, при которых Git будет сказано безвозвратно уничтожить конфигурацию пользователя , и Git выполнит, и конфигурация будет уничтожена. Чтобы вернуть его обратно, вам понадобится не только чистый фильтр , но и грязный фильтр . Фильтр пятна должен откуда-то получить правильные данные конфигурации - этот не может быть файлом, который уничтожается и воссоздан прямо сейчас, - и поместить его в поток данных.
поэтому конфигурация также должна храниться в каком-то другом файле, который Git не будет перезаписывать , либо полностью вне рабочего дерева, либо никогда не фиксироваться. В этом случае вы можете просто прочитать значение из другого файла. Так что просто используйте этот файл. См. ответ Ben W для этой альтернативы.
В качестве другого варианта рассмотрите возможность чтения основных XML данных, например:
<OutputPath type="indirect">/etc/oursoftware.d/config.output</OutputPath>
, чтобы указать, что выход «путь» здесь - это имя другого файла - в данном случае /etc/oursofware.d/config.output
, - который пользователь сконфигурирует, чтобы он содержал выходной путь. Или, если доступны переменные среды:
<OutputPath type="envvar">$OURSOFTWARE_OUTPUT_PATH</OutputPath>
, указывающие, что программное обеспечение должно запускаться как:
OURSOFTWARE_OUTPUT_PATH=/path/to/file.ext program
, например. Обратите внимание, что вы должны изменить свою C# программу, чтобы она понимала эти новые XML элементы управления.