Как стать автором
Обновить

Комментарии 32

для тех же целей использую samba (сами файлы в виртуалке), лет 5 уже, полет нормальный
Сталкиваемся с медленной работой гита + samba. Огромный репозитарий, куча веток и т.п. Чем больше история, тем дольше выполняются команды гит, например доходит до того, что git status выполняется 15-20 сек. Пока решаю проблему через ssh и консольный гит в системе.

В начале разницы вообще не ощущалось, где-то через 2 месяца разработки проекта, стали заметны задержки и пока они только увеличиваются каждый день.
НЛО прилетело и опубликовало эту надпись здесь
> С ним те же самые проблемы, что и с SSHFS
я прям не знаю что ответить, вы заставляете меня усомниться в том что я вижу каждый день…
реально что-то подобное можно сделать только если пытаться одновременно git запустить и на хостовой машине и через ssh

НЛО прилетело и опубликовало эту надпись здесь
OnYourLips У автора нет упоминания про samb'у это вы придумываете. Отсылки про то что вы слышали тоже достаточно виртуальны. Неуместные сравнения тоже не делают вам чести, а заявляете вы гораздо безапелляционнее, что ваше мнение единственно верное.

Я описываю свой опыт, внизу даже привожу некие цифры по которым можно прикинуть масштаб проблемы. Более того я даже пробовал такое в рамках локальной сети и оно по скорости не сильно медленее чем на одном хосте
Да это медленнее чем держать файлы локально, но не настолько чтобы это было проблемой.
Да первичное индексирование занимает пару минут, но никаких вечных индексаций я не всречал.
Зато скорость выполнения больше чем если бы я на Windows поднял бы тот же apache + php, нет глюков как с Shared Folder когда внутри виртуалки видно только половину файла. или не видно его вовсе.

С синхронизацией есть большая проблема если вам нужно что-то делать и локально и внутри виртуалки, так как по сути это 2 копии файлов.
иначе индексация на хосте в IDE будет вечной

Давно пользуюсь такой схемой. Отлично работает.
если вы уверены что зависит от размера именно истории попробуйте
git gc

а так 4000 файлов в индексе, +20000 у зависимостей, 6500 коммитов, 120 веток, — 7 секунд, через IDEA секунды 3-4
Пробовал, не помогает
events.yandex.ru/lib/talks/2588/ — гит в принципе тормозит на больших проектах.
Почему бы в один из релизов не продолжить разработку в чистом репозитории?
Я захожу на машину через ssh и все летает как и должно быть, тут дело точно не в гите.
гм, так вы под вагрантом git гоняете… а зачем?
NFS и NFS Reverse — тупо отказались работать на OSX без плясок с бубном (по отзывам в интернете, тоже не решают вопрос фундаментально)
NFS отлично решает этот вопрос. Важно, чтобы NFS сервер был именно в гостевой машине. SSHFS тоже неплохо работает. Конечно если вы запускаете Вагрант не на локальной машине, а где то на действительно удалённом сервере, то нужно иметь достаточно быстрое интернет подключение.
Мы работали на одном проекте по samba с гостя, очень успешно. Только надо помнить, что гит должен работать на той же системе, на которой лежат файлы. Т.е. в данном случае — на госте через ssh. Все девелоперы (и верстальщики) юзали консольный гит по ssh и не парились. Но у такого сетапа есть два минуса: 1) vagrant up надо делать не в рабочей копии проекта, а в другом месте, а потом уже рабочую копию вручную маунтить на хост, что не очень удобно, 2) IDE не то чтобы сильно быстро индексирует файлы, которые доступны через шару (не очень критично на самом деле для нас оказалось, приходилось подождать изредка 30 сек, нуок).
Теперь я юзаю везде NFS (файлы на хосте), на OSX без вопросов завелся, даже на винде. Но тоже есть проблемы вечно какие-то, то файл не сразу увидит, то время изменения неверное видно, хз. Надо будет попробовать ваш способ.
Linux, NFS — полет нормальный.
OSX, NFS, SSD — полет нормальный, необходимости в штуках типа unison/rsync для локальной машины не вижу. Единственное что чуть побаловался с настройками маунтинга NFS (размер буферов чуть увличил, кеширование включил ну и другие мелочи).
Нет желания написать небольшой топик про настройку NFS?
А под венду нет какого-то вменяемого NFS-клиента?
В qemu/kvm в качестве протокола для shared folders используется сетевая файловая система 9p, которая обеспечивает бОльшую производительность. Virtualbox, кажется, сам не поддерживает 9pfs, но всегда можно сделать сеть между хостом и гостем, и примонтировать shared folder через 9p по сети.
У нас на работе отлично у всех работает NFS на OSX без тюнинга.

В конфиге просто указано:
  config.vm.synced_folder ".", "/vagrant", type: "nfs", mount_options: ['rw', 'vers=3', 'tcp', 'fsc']
  config.nfs.map_uid = Process.uid
  config.nfs.map_gid = Process.gid


Особенно разительна разница в проектах на Symfony2 (php)
Я еще actimeo подправил — ватчеры для сборки фронтэнда отрабатывают чуть шустрее, в смысле от момента сохранения файла на хосте до срабатывания ватчера.
Аналогично, никаких плясок с бубном для NFS в OS X (10.8, 10.9, 10.10)
Утянул ваш конфиг себе. Надеюсь мои проблемы с NFS решатся вашими mount_options =).
Я сделал так. В вагранте у меня крутится серверное окружение (LAMP с кучей нужных плагинов, extension'ов, и базой данных).
БД тестовая, но на 18 гигабайт. Изначально у меня база была на удалённом сервере, но от этой практики отказались в пользу локальной базы в виду низкой скорости коннектов к базе. А вот удалённый сервер — там и мастер ветка, и база данных, и используется уже для тестов перед деплоем на продакшн. К нему гитом лезем через нативную консоль, не через вагрант, т.к. неоднократно было замечено, что в вагранте даже при 4 гигах памяти гит работает недостаточно быстро.
А вот файлы веток у нас тоже нативно лежат, и подключаются в вагрант как shared_folder.
Хост Ubuntu 14.04, вагрант тот же, FS ext4. Ну и естественно, бокс запакован и раздаётся всем девелоперам. Доступ к удалённому серверу по ssh ключам, которые уже прописаны в боксе.
Я в PHPStorm делал через Remote SSH External Tools в котором была команда запуска rsync и рисовал более менее адекватный прогресс исходя от вывода rsync.

Ничего более адекватного по скорости я не нашел :(
Для синхронизации локальной версии проекта с хостом можно использовать realsync. Работает на основе rsync.
Скорость синхронизации мгновенная
Добрый день, поставил плагин, не могу запустиь виртуалку, при vagrant up в консоль вываливается:

There are errors in the configuration of this machine. Please fix
the following errors and try again:

Unison:
* translation missing: en.vagrant_sync.config.host_folder_required
* translation missing: en.vagrant_sync.config.guest_folder_required


Код с гитхаба в конфиг вставлял.
Подскажете куда копать?
Свяжитесь со мной в скайпе ( dmitry.matora ) и покажите экран — разберемся.
$ vagrant -v
Vagrant 1.7.1

$ vagrant reload
There were warnings and/or errors while loading your Vagrantfile
for the machine 'default'.

Your Vagrantfile was written for an earlier version of Vagrant,
and while Vagrant does the best it can to remain backwards
compatible, there are some cases where things have changed
significantly enough to warrant a message. These messages are
shown below.

Warnings:
* Unknown configuration section 'sync'. If this section was part of
a Vagrant 1.0.x plugin, note that 1.0.x plugins are incompatible with 1.1+.

There are errors in the configuration of this machine. Please fix
the following errors and try again:

Unison:
* translation missing: en.vagrant_sync.config.host_folder_required
* translation missing: en.vagrant_sync.config.guest_folder_required


Vagrant::Config.run do |config|                                                                                                                                                                    [80/9750]
  config.vm.box = "virool"
  config.vm.box_url = "/Users/trybeee/Dropbox/Vagrant/package.box"
  config.ssh.forward_agent = true
  config.vm.network :hostonly, "33.33.33.10"
  config.vm.share_folder("vagrant-root", "/vagrant", ".", :nfs => true, :nfs_version => 3)

  config.sync.host_folder = "./"  #relative to the folder your Vagrantfile is in
  config.sync.guest_folder = "./" #relative to the vagrant home folder -> /home/vagrant
  # config.sync.ignore = "Name {.idea,.DS_Store}"

Необходимо использовать Vagrant.configure(«2»)

Vagrant.configure("2") do |config|
  config.sync.host_folder = "./"
  config.sync.guest_folder = "./"
  ...
end
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации