Как прагматично настроить контроль версий файлов?

Начиная с версии поддержки версии 24.0.0, вы можете вызвать метод FragmentTransaction.commitNow(), который совершает транзакцию синхронно, вместо вызова commit(), а затем executePendingTransactions(). Поскольку документация говорит, что этот подход еще лучше:

Вызов commitNow предпочтительнее вызова commit (), за которым следует executePendingTransactions (), поскольку последний будет иметь побочный эффект от попыток зафиксировать все текущие ожидающие транзакции независимо от того, является ли это желаемым поведением или нет.

30
задан erenon 11 October 2012 в 10:05
поделиться

8 ответов

Вместо того, чтобы управлять версиями фактического конфигурационного файла, вы можете поместить в управление версиями шаблон или файл по умолчанию, а также скрипт, который будет запрашивать информацию о БД и учетные данные для генерации реального конфигурационного файла, который будет исключен из (т.е. проигнорирован) управления версиями. При оформлении заказа разработчики могли бы запустить этот скрипт, чтобы получить рабочую среду. Этот сценарий также может быть вызван как часть любого процесса установки, используемого вашим приложением.

Также смотрите мой ответ на похожий вопрос.

.
26
ответ дан 27 November 2019 в 22:30
поделиться

Не знаю, как реализован ваш конфигурационный файл, но у вас есть иерархические overides, как бы я с этим справился.

У вас есть основной конфигурационный файл, который содержит общий конфигурационный файл плюс фиктивное имя пользователя/пароль (или пропустите их вообще). Каждый разработчик затем создает локальный override.config (или что-то в этом роде) со своим конкретным именем пользователя/паролем. Основная конфигурация переходит под контроль исходников, локальные переопределения для разработчика (или машины) - нет.

Я делал это в .NET, но не в PHP, так что, боюсь, не знаю, насколько это просто.

.
9
ответ дан 27 November 2019 в 22:30
поделиться

Создайте файл локального переопределения, который в качестве переменных PHP содержит специфичную для пользователя информацию.

Например, создайте файл local_overrides.php, который содержит следующее:

$local_password = 'qUzaEAFK13uK2KHy';

Затем в файле, который включает пароль вашей БД, сделайте что-нибудь подобное

$overrides = 'local_overrides.php';

if (file_exists($overrides)) {
   #include_once($overrides);
   $db_password = $local_password;
} else {
   // perform appropriate action: set default? echo error message? log error?    
   $db_password = 'l1m1t3d!'
}

Файл локального переопределения никогда не должен быть замечен исходниками.

.
4
ответ дан 27 November 2019 в 22:30
поделиться

Есть ли отдельный файл, в котором содержатся ТОЛЬКО секреты, которые не контролируются версиями?

Или, в идеале, не используйте пароли полностью, используя openssh, или подобные им, и выполняйте аутентификацию по открытому/закрытому ключу для каждого пользователя.

.
2
ответ дан 27 November 2019 в 22:30
поделиться

В моих проектах я использую директорию, в которой хранятся такие файлы, но она не загружена на сервер, поэтому мой конфигурационный файл db находится в этой директории и сконфигурирован для сервера, на котором размещен проект. Если кто-то изменит config-файл, то он изменит конфигурационный файл сервера, а кто-то, обновляющий ревизию, увидит изменения в этом файле и должен будет вручную изменить свою локальную конфигурацию.

Я не вижу способа сделать это вместо этого. Если вы нашли другой подход, пожалуйста, поделитесь.

0
ответ дан 27 November 2019 в 22:30
поделиться

Я использую для этого txt-файл со структурой конфигурационного файла. А после этого я сделаю копию, изменю расширение и позволю своей системе управления версиями игнорировать этот файл(и).

Поэтому, когда вы вносите изменения в конфигурационный файл, просто обновите его txt-версию. Это единственный вариант, о котором я могу подумать, это еще и логика (в моих глазах)

.
1
ответ дан 27 November 2019 в 22:30
поделиться

А как насчет крючка для предварительного отключения чувствительных полей? Это предполагает, что вам, конечно, удобно отправлять файл по сети.

Обновление для другого конца проблемы:
Для обработки обновлений вам нужно либо форсировать ручное слияние чувствительных файлов, либо изменить локальный процесс сборки, чтобы перезаписать чувствительные строки содержимым из локального/приватного/заимствованного файла.

.
2
ответ дан 27 November 2019 в 22:30
поделиться

У меня было кое-что похожее на это, хотя я не знаю, сработает ли это с тобой. У меня был каталог, который содержал файлы, содержащие пароли. Этот каталог не контролировался версиями. Файлы были названы в честь приложений, которые их использовали, и в конфигурационных файлах я 'исходил' от соответствующего файла паролей в тот момент, когда он был нужен. Это потребовало бы, чтобы ваш парсер конфигураций мог работать с источниками.

.
0
ответ дан 27 November 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: