В рамках проекта [[http://www.sparkleshare.org/ Sparkleshare]] развивается свободный движок для организации похожих на Dropbox online-хранилищ, непосредственное хранение данных в которых осуществляется в любом Git-репозитории. Использование Git позволяет задействовать элементы версионного контроля для отслеживания изменений в файлах, давая возможность отследить все изменения и при необходимости вернуться к состоянию определенного файла в прошлом.С технической стороны SparkleShare является Git-клиентом, оптимизированным для хранения и обмена файлами. Программа может использоваться не только для хранения своих файлов, но и для организации обмена файлами с другими людьми или для обеспечения синхронизации данных между домашним и рабочим ПК. SparkleShare поддерживает шифрование хранимых данных, что позволяет использовать публичные Git-репозитории не опасаясь возможной утечки информации. Например, можно использовать Git-репозитории в публичных сервисах Gitorious и GitHub.
Рассмотрим процесс развертывания Sparkleshare-хранилища под управлением Fedora Linux с целью организации доступного дома и на работе хранилища. Для организации рабочего процесса создадим в домашней директории каталог Sparkleshare, в котором будем создавать подкаталоги, соответствующие текущим проектам. В качестве первичного хранилища будет использовать Git-репозиторий на собственном сервере, доступ к которому организован через SSH. Одновременно настроим на сервере доступность сохраняемых файлов через web, разместив клон репозитория в директории ~/public_html.
++ Установка Sparkleshare на локальной клиентской машине.Добавляем соответствующий YUM-репозиторий, в котором содержатся готовые пакеты с Sparkleshare:
cd /etc/yum.repos.d
sudo curl -O http://repos.fedorapeople.org/repos/alexh/sparkleshare/fedor...Устанавливаем Sparkleshare
sudo yum install -y sparkleshare ssh-askpass
Удаляем пакет nautilus-python, так как иначе при работе Sparkleshare наблюдается крах Nautilus.
sudo yum remove -y nautilus-python
PS. Пользователи Ubuntu могут загрузить Sparkleshare из [[https://launchpad.net/~terminus/+archive/ppa/+packages PPA-репозитория]]:
sudo add-apt-repository ppa:pdffs/sparkleshare
sudo apt-get update
sudp apt-get install sparkleshare++ Настройка Git-репозитория
Создаем Git-репозиторий на внешнем сервере, который будет использован в качестве первичного хранилища:
git init --bare repo.git
Для работы на сервере должны быть установлены пакеты с git и openssh-server.
Проводим первичное клонирование репозитория в директорию ~/public_html, чтобы файлы были доступны через web:
cd ~/public_html
git clone repo.git
cd repoСоздаем тестовый файл:
echo 'Fedora 15 rocks!' >> test.txt
Добавляем файл в Git и принимаем изменения.
git add test.txt
git commit test.txt -m 'initial commit2'Создаем начальную ветку:
git push origin master++ Подключаем свои локальные машины к репозиторию
На локальной рабочей машине останавливаем рабочий процесс Sparkleshare и клонируем созданный на прошлом шаге репозиторий
sparkleshare stop
cd ~/SparkleShare
git clone логин@хост:/home/логин/repo.gitПроверяем содержимое:
cd ~/SparkleShare/repo
lsМеняем содержимое тестового файла
echo 'Pandas rule.' >> test.txt;
Применяем изменения:
git commit -a -m 'panda PSA'
git push
На удаленном сервере, где создан базовый Git-репозиторий принимаем изменения:cd ~/public_html/repo
git pullПроверяем, изменилось ли содержимое test.txt:
cat test.txt
Если все работает нормально, то запускаем на локальной машине Sparkleshare которые возьмет в свои руки выполнение рутинных операций по отслеживанию изменений и синхронизации данных на внешний сервер.
sparkleshare start
Настраиваем автозапуск Sparkleshare в GNOME:
cp /usr/share/applications/sparkleshare.desktop ~/.config/autostart
Заходим в директорию с репозиторием SparkleShare
cd ~/SparkleShare/repo
и создаем там новый тестовый файл:
echo '42' >> theanswer.txt
На удаленном сервере клонируем репозиторий и убеждаемся, что новый файл автоматически был помещен в Git:
cd ~/public_html/repo
git pull
lsВсе работает.
++ Создаем автоматически обновляемое зеркало для просмотра репозитория из web.Настроим автоматическое клонирование репозитория удаленном сервере, с которого будет осуществлена раздача файлов через Web. Для работы нам понадобиться настроить удаленный вход со второй машины на первую по SSH по ключам, без ввода пароля. Инструкцию по настройке можно найти [[https://www.opennet.ru/tips/284_ssh_auth_user.shtml здесь]].
На удаленном сервере переходим в базовую директорию с Git-репозиторием (не клоном)
cd ~/git.repo/hooks
Добавляем скрипт, который будет срабатывать при добавлении файлов в репозиторий. В этом скрипте автоматически будет выполнять локальное клонирование репозитория для его видимости в web.
Создадим скрипт post-receive в директории ~/git.repo/hooks (не забудьте подставить реальное значение вместо "логин"):
#!/bin/sh
while read oldrev newrev refname
do
true
done
cd /home/user/public_html/repo
GIT_DIR=/home/логин/public_html/repo/.git git pullПроверим, создав на локальной системе третий тестовый файл:
cd ~/SparkleShare/repo
echo 'Fedora 15' >> latestfedora.txt
Переходим на удаленном сервере в директорию с клоном репозитория для web и проверяем появился ли новый файл:cd ~/public_html/repo
lsПодсказки по настройке работы Sparkleshare c Github и Gitorious можно найти на странице http://sparkleshare.org/help/
URL: https://mairin.wordpress.com/2011/05/25/fedora-sparkleshare-.../
Обсуждается: https://www.opennet.ru/tips/info/2582.shtml
Очень не хватает клиента под виндовс. Вроде на моно, должны быстро сдлеать.
TortoiseGit не катит?
Надо попробовать. Оно обратно совместимо с гит? Те никакие метадаты свои не пишет, просто морда для него? (я про спарклшар)
На Mono??? Может, я чего-то не понимаю в этой жизни, но с какого перепугу там нужно что-то боьшее, чем FUSE-base custom FS на две-три тысячи строк на C? В крайнем случае, пара скриптов, встраиваемый в контекстное меню файлового менеджера (хотя средствами FUSE явно можно обойтись).Хотя с клиентом по windows, конечно, в таком случае будет тяжко. И поделом :-)
Или они там протокол Git с нуля реализовали? Тогда - точно редкостный идиотизм.
https://github.com/hbons/SparkleShare/graphs/languagesНу может нравится им си-шарп :)
Грандиозно! Обязательно возьму на заметку и попробую так как функцианальности DropBox мне явно уже не хватает. Спасибо.