Управление версиями загруженных изображений к файловой системе

Не знайте, насколько скрытый это, но я нашел его полезным при необходимости сделать Хеш из одномерного массива:

fruit = ["apple","red","banana","yellow"]
=> ["apple", "red", "banana", "yellow"]

Hash[*fruit]    
=> {"apple"=>"red", "banana"=>"yellow"}
6
задан Community 23 May 2017 в 10:32
поделиться

2 ответа

Для нас контроль версий не так важен, как распределение. Мета-данные добавляются через веб-администратора, а изображения сбрасываются на сервер администратора. Скрипты Rsync выталкивают их в кластер, который обслуживает образы продуктов. Для разработки / тестирования мы просто выполняем rsync с главного сервера prod обратно на сервер разработки.

rsync отлично подходит для балансировки нагрузки и распределения. Если вы подключите git к серверу admin / master, у вас будет довольно хорошее решение.

Если вас устраивает резервное копирование, которое сохраняет историю файлов во время резервного копирования (в отличие от контроля версий для каждой ревизии), тогда может помочь некоторая адаптация этого: Автоматическое резервное копирование в стиле моментальных снимков с помощью rsync .

2
ответ дан 17 December 2019 в 07:05
поделиться

Отражение - один из способов сделать это ( SetField ).

Второй способ получить это любопытство - если вы передадите ссылку слишком рано, передав this (или что-то, включающее неявное this , например поле, захваченное анонимным методом / лямбда) из .ctor :

public MyClass(int id)
{
    Program.Test(this); // oopsie ;-p
    HashPrefs = new Hashtable();
}

Или, что более вероятно (учитывая вопрос):

SomeQueue.Add(this);

Может возникнуть еще один важный вопрос - нельзя ли его вообще назначить? И ответ на это - да, особенно если вы используете сериализацию. Вопреки распространенному мнению, вы можете обойти конструкторы, если у вас есть причина; DataContractSerializer - хороший пример того, что делает это ... Таким образом, существует сильная взаимосвязь между кодом и изображениями, даже если изображения находятся в собственном репо.
Кроме того, это позволяет избежать проблем, связанных с тем, что git gc или git prune менее эффективны при большом количестве двоичных файлов: если изображения находятся в собственном репозитории и с несколькими вариациями для каждого из них, обслуживание этого репо довольно невелико. В то время как репозиторий исходного кода может развиваться гораздо более динамично, с использованием обычных команд обслуживания git.

2
ответ дан 17 December 2019 в 07:05
поделиться
Другие вопросы по тегам:

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