3

(この質問はSuperUserでタンブルウィード バッジを獲得しましたが、代わりにここで試すように勧められました)

私は LAMP 開発サーバーの主要なブランチで作業していますが、頻繁にマイナーではあるが緊急の更新をトランクに行う必要があります。

  • どの作業コピーでも同じローカル URL を使用したい (複数のサイトは必要ない - 怠惰、ブックマーク、メンテナンス)。
  • トランクに 5 分間切り替えるためだけに、ブランチで未完成の作業をコミットする必要はありません。
  • 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

私の問題は、apache が切り替え直後に時々混乱し、ファイルの空、古い、または重複 (php でクラスエラーを再宣言できませんか?) バージョンを保持しているように見えることです。Apacheを再起動するとすべてが解決するようですが、頭の中で警告ベルが鳴っています。

これはシンボリック リンクの合理的な使用法ですか、それとも将来のために問題を保存しているだけですか?

4

1 に答える 1

3

シンボリック リンクを広く使用して、共通ライブラリをソースにしました。共有ライブラリが変更され、クールなすべてのプロジェクトが最新のコードを取得します。私はこの方法で多くのプロジェクトを管理しましたが、それは完全に理にかなっているように思えました。

それは、シンボリックにリンクされたライブラリに重大な問題があることに気付くまでです。よし、誰もが得するソースコードを変更してくれ。20 hudson が後でビルドされ、シンボリック リンクを使用する 4 年前のプロジェクトが失敗した場合はどうなるでしょうか...

コードの依存関係を削除しますが、展開環境を削除しないのはなぜですか...

いいえ、シンボリック リンクを使用することは、長期的にはあまり良い考えではありません。

代替手段は何ですか?

まだシンボリックリンクを使用して、リンクされたライブラリを一意のプロジェクトごとに分岐し、それらを参照します。これは依然としてリンクされたライブラリを意味し、ブランチとトランクを切り替えるときも頭痛の種になりました。シンボリックリンクを完全に削除するところまで来ました。

1 つ目は、ライブラリ用の Eclipse ライブラリ プロジェクトを作成し、それを他のプロジェクトから参照することです。もう 1 つは、Jar または Swc(flash lib) を作成し、それらをプロジェクトの依存関係として直接インポートすることです。プロジェクトのソースで変更が発生した場合は、プロジェクトを更新するか、hudson でビルドされたライブラリを再インポートできます。

私のシナリオでは Appache を使用していないため、私はそこでは役に立ちませんが、一般的に、特に SVN でシンボリック リンクを使用することは、プロジェクト作業から十分に切り離す必要があります。

また、シンボリック リンクへの変更はバージョン管理されていないと思います。それらは静的であり、変更を追跡することはできません。(その点で間違っている場合は修正してください)。私が正しければ、それらは異なるリポジトリ間を移動したり機能したりしません。

編集 2

コメントによると、おそらくこれが役立つかもしれません.apacheからプロジェクトのトランクとブランチの両方を提供したい場合は、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"

apache を再起動し、両方にアクセスします。

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

単に fooTrunk を参照するように localhost を設定したり、別のポートや仮想ホストを使用したりすることもできます (これについてはあまり詳しくありません)。

于 2012-08-19T12:04:39.503 に答える