Настройки моего рабочего стола живут в Subversion'е. Цвета, шрифты, обои на рабочем столе, почтовые фильтры и задачи в органайзере — всё это сохраняется наравне с «обычными» текстовыми файлами и офисными документами. Как следствие, я могу иметь одну и ту же рабочую среду на разных машинах. Это не просто теория; я на практике несколько недель пользовался двумя разными десктопами с идентичными настройками.
Пришлось повозиться, конечно же. Основная проблема — определить, что действительно требуется синхронизировать, а что не нужно (кеш браузера, временные файлы и прочая ерунда). Вот этим опытом, пожалуй, я могу поделиться.
#!/bin/sh
for d in `find ~/.kde -type d -name .svn | xargs -L1 dirname`
do
i=`svn pg svn:ignore $d | awk '{ print "<dd>" $1 "</dd>" }' | grep -v "<dd></dd>"`;
xd=`echo $d | replace $HOME \~`
[ "$i" ] && echo -e "<dt>$xd</dt>\n$i\n"
done
Этим скриптом я получаю список масок файлов, которые в данный момент игнорируются в моём каталоге настроек KDE. Всё остальное можно смело добавлять в репозитарий.
- ~/.kde
- tmp-*
- socket-*
- cache-*
- ~/.kde/share/apps/konqueror
- *.mine
- *.bak
- faviconrc
- *history
- *cache
- ~/.kde/share/apps/k3b
- temp
- *.log
- ~/.kde/share/apps/kcookiejar
- cookies
- ~/.kde/share/apps/kdesktop
- IconPositions
- ~/.kde/share/apps/kabc
- *.new
- *__*
- lock
- ~/.kde/share/apps/kmail
- unfiltered.*
- autosave*
- search
- imap
- dimap
- lock
- ~/.kde/share/apps/kmobiletools
- *__*
- ~/.kde/share/apps/kontact
- *~
- ~/.kde/share/apps/ksplash
- cache
- ~/.kde/share/apps/klipper
- history*
- ~/.kde/share/apps
- noatun
- khelpcenter
- kcal
- kpdf
- kpilot
- RecentDocuments
- kthememanager
- nsplugins
- kconf_update
- kab
- ~/.kde/share/apps/quanta
- dtep
- backups
- ~/.kde/share/apps/korganizer
- docprefs.todolist.kconfig
- ~/.kde/share/apps/akregator
- Archive
- lock
- ~/.kde/share/apps/basket
- temp*
- ~/.kde/share/apps/khtml
- formcompletions
- ~/.kde/share/apps/kopete
- logs
- oscarpictures
- metacontactpicturecache
- jabberphotos
- jabber-capabilities-cache.xml
- *.bak
- ~/.kde/share/apps/amarok
- moods
- *save*
- *cache
- *.log*
- xine-config
- submit.xml
- current.xml
- transferlist.xml
- albumcovers
- undo
- scripts-data
- contextbrowser.html
- collection_scan.files
- collection.db
- ~/.kde/share/config
- *.lock
- korgacrc
- kcmnspluginrc
- startupconfigfiles
- katepartluaindentscriptrc
- kdiff3pluginrc
- katesyntaxhighlightingrc
- katepartindentjscriptrc
- converterrc
- gtkrc*
- konq_history
- noatunrc
- *_updaterc
- *_update
- kpilot*
- ~/.kde/share/config/colors
- Recent_Colors
- ~/.kde/share/config/session
- *
- ~/.kde/share
- mimelnk