Как синхронизировать репозиторий через облачные хранилища (Google Drive, Dropbox, etc)?
=========================================================================================

 Один разработчик использует несколько машин. Переходя от одной к другой нужно иметь актуальный рабочий каталог проекта. Проект содержится в репозитории (hg, но актуально для любой vcs). Коммитить в удаленный репозиторий чтобы просто перейти на другую машину неудобно. Хочется просто сесть и продолжить работу.  

Кажется, что можно просто положить проект в любой облачный диск (Google drive, dropbox, etc) и проблема решена. Но я слышал что в таком сценарии hg начинает глючить из-за влияния неконтролируемой им синхронизации служебных файлов репозитория. Коллега использует этот сценарий и иногда репозиторий зависает с непонятными ошибками.  

Можно исключить из синхронизации через облако саму папку с репозитарием .hg и синхронизировать только рабочий каталог. Но есть проблема:  

* делаем несколько новых коммитов, публикуем в "главный" репозиторий  

* делаем еще изменения в рабочем каталоге,   

* переходим на другую машину  

* рабочий каталог репозитория уже обновлен - все изменения присутствуют  

* стягиваем новые коммиты из "главного" репозитория  

Как теперь объяснить репозиторию, что в рабочем каталоге уже актуальная версия на "вот этот коммит" + еще какие-то незафиксированные изменения???  

Если просто сделать update, то потеряем незафиксированные изменения.  

Возможно я не знаю банальной команды hg.  

Возможно нужно как-то правильно "готовить" hg в связке с облачной синхронизацией.  

Поделитесь пожалуйста своим решением проблемы. 

 Правильный ответ - никак. Синхронизируйте репозиторий через удаленный сервер с этим самым репозиторием. И не изобретайте себе геммороя. 

 Я какую то чушь прочитал. Я работаю на разных компах и в жизни не подумал бы использовать для хранения файла на облачные диски. Я вообще не понимаю их роль, плюс они медленные.  
  

> Как теперь объяснить репозиторию, что в рабочем каталоге уже актуальная версия на "вот этот коммит" + еще какие-то незафиксированные изменения???

  
`git fetch`  
  

Смотри сейчас тебе батька покажет тайную технику использования гита.   

1. `git fetch`  

2. `git pull`  

3. `git push` 

 Учитывая, что при каждом коммите папку с БД репозитория знатно переколбашивает, вы рискуете тратить десятки минут на синхронизацию средствами облачных дисков, в то время как отправка диффов при синхронизации с репой займет секунды. 

 Следует разграничить каталог исходников и каталог репозитория.  

Каталог исходников держим в Dropbox. Каталог репозитория на каждой машине создаем вне Dropbox-а, внутрь кладем символическую ссылку на каталог исходников (на винде это `mklink /j`).  

Например:   

```
cd my_repo
mklink /j src /path/to/Dropbox/my_src
```
  

Каталог исходников автоматически синхронизируется на каждой машине, коммитим из каталога репозитория.