2012-08-09 2 views
3

(Этот вопрос заработал мне перекати значок на SuperUser, но мне посоветовали попробовать его здесь, а)Переключение между стволом и ветви с символическими ссылками

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

  • Я хочу использовать тот же локальный адрес для каких рабочей копии я нахожусь (не хочет несколько сайтов -. Леность, закладки, техническое обслуживание)
  • Я не хочу, чтобы совершить незаконченными работайте в ветке, чтобы я мог переключиться на ствол в течение пяти минут.
  • Я использую subversion, поэтому у меня нет эквивалента git stash.

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

# svn working copies for trunk and branch 
/sites/footrunk/ 
/sites/foobranch/ 
/sites/foo -> foobranch #symbolic link 

# eg to switch to trunk 
cd /sites; 
ln -s footrunk foo_tmp && mv -fT foo_tmp foo 
cd -; 
sudo service apache2 restart 

Моей проблема заключается в том, что апач иногда запутывается сразу после переключения, и, кажется, удерживать пустую, старую или дублируемую (не могу обновить ошибку класса в php?) версии файлов. Перезапуск apache, кажется, разрешает все, но в моей голове появляются предупреждающие звонки.

Является ли это разумным использованием символических ссылок, или я просто сберегаю проблемы на будущее?

ответ

3

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

Это до тех пор, пока я не понял, что существует серьезная проблема в символически связанной библиотеке. Хорошо, измените исходный код. 20 hudson строит позже, и вы начинаете думать, ага, да, не такая хорошая идея, что, если проект 4 года назад, используя символическую ссылку, терпит неудачу ...

Мы удаляем зависимости в нашем коде, почему бы и нет среды развертывания ...

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

Каковы альтернативы?

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

У меня теперь есть два метода: во-первых, я создаю проект библиотеки eclipse для библиотеки и ссылаюсь на другой проект. Другой - я создаю Jar или Swc (flash lib) и импортирую их напрямую в качестве зависимости в моем проекте. Если в источнике проекта возникают изменения, я могу либо обновить проект, либо повторно импортировать библиотеки, построенные на hudson.

В моих сценариях не используется Appache, поэтому я не помогаю там, но в целом с использованием символических ссылок, особенно в SVN, следует хорошо следить за работой проекта.

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

Edit 2

Согласно комментарий, возможно, это может помочь, когда я хочу служить как ствол и ветви проекта от апача я буду использовать Apache псевдоним х. Конечно, у вас могут быть проблемы с uri, так что это может не сработать, но это альтернатива, чтобы попробовать. Это снова полностью зависит от вашей настройки (я предполагаю, что у меня что-то не хватает, как работают сим-ссылки).

>touch /etc/apache2/other/emiles.conf 
>pico /etc/apache2/other/emiles.conf 

.. добавить следующее.

Alias /fooBranch "/Users/emile/fooBranch" 
Alias /fooTrunk "/Users/emile/fooTrunk" 

<Directory "/Users/emile/fooBranch"> 
    Options +Indexes +MultiViews +FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 
#copy above with "/Users/emile/fooTrunk" 

Restart appache, а затем получить доступ как

http://localhost/fooBranch 
or 
http://localhost/fooTrunk 

Можно даже настроить Localhost просто ссылаться fooTrunk, или, возможно, использовать разные порты, виртуальные хосты (который я не знаком с) ,

+0

Спасибо, Эмиль, но я не использую символические ссылки для ссылки на внешние активы. Каждая рабочая копия является самодостаточной. Просто я хочу, чтобы удобство переключения между двумя рабочими копиями (возможно, с незафиксированными изменениями) при использовании той же локальной настройки LAMP. – Ken

+1

и да, я не могу больше согласиться с «Всем искренне, нет, используя символические ссылки, на самом деле не очень хорошая идея в конечном счете, и да, предупреждающие колокола должны уходить», поскольку зависимости идут – Ken

Смежные вопросы