Еще один обработчик JSON я написал:
С ним вы можете сделать следующее:
let obj:[String:AnyObject] = [
"array": [JSON.null, false, 0, "", [], [:]],
"object":[
"null": JSON.null,
"bool": true,
"int": 42,
"double": 3.141592653589793,
"string": "a α\t弾\n
Я имел ту же проблему и создал инструмент сверху Подверсии, которая добавляет разрешение, владение и отслеживание secontext, не допускает .svn каталоги в на самом деле имеющие версию деревья и добавляет понятие слоев, таким образом, можно, например, отследить всю конфигурацию, связанную с разработкой, которую Вы затем только проверяете на машины, которые Вы используете для разработки.
Это помогло мне организовать свои настройки намного лучше через 50 + машины, в которые я вхожу.
Вот страница проекта. Это все еще немного грубо вокруг краев, но мы также используем его на работе для управления версиями конфигурации системы для наших 60 + серверы.
В целом любая система управления версиями, которая использует своего рода файлы метаданных для отслеживания материала, собирается причинить Вам боль, как на самом деле с помощью него.
Любой DVCS, вероятно, хорошо работал бы. Моим фаворитом является Базар. Было бы самым легким сохранить Ваши файлы конфигурации в .config, версия что, и затем символьная ссылка как соответствующие.
Преимущество DVCS - то, что можно присвоить версию файлам конфигурации на машину также, не вмешиваясь в управление версиями глобальные конфигурации.
У меня была эта проблема в течение многих лет, и я не думаю, что управление версиями является обязательно правильным способом пойти. Я имел хороший успех с синхронизатор файла Унисона, который разработан для специальной цели поддержать последовательные корневые каталоги на двух машинах. Я в настоящее время управляю семью копиями с унисоном, и детали немного хитры, но это - большой инструмент и если Вы запустите с два, то Вы будете чрезвычайно рады.
Основное отличие между Унисоном и VCS - то, что Унисон готов задержать контакт с конфликтами, которые должны быть объединены. Плюс он разбирается во всех значениях по умолчанию. И это быстро: Я ежедневно использую его, по абонентской линии DSL, для синхронизации приблизительно 40 ГБ данных.
Программное обеспечение управления версиями не является действительно большим для корневых каталогов. Хуже, некоторое программное обеспечение действительно не любит .svn папки или начинает интерпретировать их содержание. Вы могли, конечно, попытаться зафиксировать это с некоторой очень сложной установкой зеркального отражения, но это твердо.
git или Дешевая ветвь Mercurials отлично подойдет для этой ситуации. Я начал с Mercurial, потому что он проще, но впоследствии перешел на git.
Вот разработчик Mozilla, это пробуют, чтобы сделать это: Версия, управляющая моим домашним dir, существует несколько предложений в комментариях.
Один из способов сделать это очень гибко - это иметь каталог сборки под контролем ревизии, а не пытаться сделать svn своим настоящим домом. каталог (который имеет свои проблемы)
, поэтому внутри него вы сохраняете структуру, подобную
/home/you/code/dotfiles /home/you/code/dotfiles/dotbashrc /home/you/code/dotfiles/dotemacs ... /home/you/code/dotfiles/makefile
, и make-файл может содержать логику для специализированных файлов (или нет)
может быть тяжелее, чем вам нужно, но если ваша фактическая настройка это сложно (я делал это через 3 или 4 разных юнита одновременно), тогда стоит сделать что-то подобное.
Я бы посоветовал заглянуть в etckeeper , если вы еще этого не сделали. Он предназначен для управления версиями файлов конфигурации в / etc с использованием системы контроля версий:
etckeeper - это набор инструментов для пусть / etc хранится в git, Mercurial, Darcs или BZR хранилище. Зацепляет apt (и другой пакет менеджеры включая yum и pacman-g2) автоматически фиксировать сделанные изменения в / etc во время обновления пакета. Это отслеживает метаданные файла, которые пересматриваются системы управления обычно не поддержка, но это важно для / etc, такие как права доступа / И т.д. / тень. Это довольно модульный и настраиваемый, а также простой использовать, если вы понимаете основы работа с контролем версий.
Хотя он разработан для / etc, я думаю, что он, вероятно, также будет работать (возможно, с некоторой адаптацией) для домашних каталогов, поскольку основные потребности одинаковы.
Я использую Git для этого. До сих пор мне удавалось синхронизировать домашние каталоги на нескольких машинах без необходимости ветвления и объединения. Вместо этого я использую git rebase
. До сих пор конфликтов было мало, и их было легко разрешить.
Я оставляю файлы, для которых необходимо отдельное содержимое, вне контроля версий, помещая их в .gitignore
.
Я сохраняю файлы конфигурации для следующих инструментов в git:
Я храню заметки и тому подобное в подкаталоге, имеющем собственный репозиторий git.