65

カスタムポート(12345としましょう)で、SSH経由でアクセスできるgitリポジトリサーバーを実行しています。この場合、SSH 構文を使用してリポジトリ URL を指定する必要があることがわかりました。

git clone ssh://login@server.com:12345/absolute/path/to/repository

ユーザーが絶対パスを指定せずにリポジトリのクローンを作成できるように設定したいと思います。

git clone ssh://login@server.com:12345/repository.git

このトピックを調査したところ、次のオプションが見つかりました。

  1. URL からカスタム ポートを削除し、ユーザーがそれを~/.ssh/configファイルに追加するようにします (解決策ではなく、最後の手段です)。
  2. SSH を削除し、git-daemonそのパラメーターを使用して指定し--base-pathます (まだ回避策です...)
  3. gitosisor -のようなユーティリティを使用しますgitoliteが、この目的だけに使用するのはやり過ぎではありませんか? Gitosis は廃止されました。gitolite は非常に大きなソフトウェアです...

私が望むのは、カスタムポートを備えた「よりきれいな」SSH URL だけです (したがって、git cloneコマンド全体を配布し、リモートユーザーからは何も必要としません)。私の場合、上記のソリューションのどれが最も実行可能ですか?

4

3 に答える 3

81

別の形式のsshURL を使用する場合、絶対パスは必要ありません。例えば...

git clone lars@myserver.example.com:repos/myrepo.git

repos/myrepo.git...これは代替ポートの使用を許可しませんが、私のホームディレクトリに相対的なリポジトリを複製します。ただし、どちらの形式でも使用~して、ユーザーのホーム ディレクトリを示すこともできます。たとえば、次のようになります。

git clone ssh://login@server.com:12345/~/repository.git

ちなみに、生産中止にも関わらずgitosis機能はしっかりしていて、コードも小さくてわかりやすいです。アクセス制御の便利なセットとリポジトリのセルフサービス管理を提供します。私はそれを完全に割り引くつもりはありません。

于 2013-01-16T00:04:22.957 に答える
7

私はこれを行いますが、あなたが求めたものとはまったく異なりますが、閉じて、よりきれいなリンクを使用します。

のようなパスを作成します

/srv/git 

git プロジェクトを配置する場所

次に、ホームへのシンボリック リンクを作成します。

ln -s /srv/git $HOME

次に、より短いリンクを作成できます

git clone user@server:git/myproject.git

単一のプロジェクトがある場合は、URL の git/ 部分を取り除くことができます

ln -s /srv/git/myproject.git $HOME

git clone user@server:myproject.git

動作します。もちろん、URL の末尾にある .git は、名前に .git を含むベアを作成した場合にのみ発生します。また、ssh:// の部分は不要であることに注意してください。@ は、git の ssh URL であることを意味します。

更新:サイドノートを追加さ​​せてください:リポジトリの場所として現在使用している最新のファイルシステム階層標準に従います。/srv/git

于 2016-10-03T21:59:04.610 に答える
1

これが本当に完全な答えに値するかどうかはわかりませんが、コメント固有の書式設定ルールとの戦いにはうんざりしています。私はこう言います:

これはバージョン固有の変更のようですが、クライアント側なのかサーバー/レポホルダー側なのかはわかりません。次.git/configのような多くの URL を持つファイルがあります。

[remote "bob"]
    url = ssh://ME@MACHINE<strong>/~ME</strong>/repositories/REPO.git
    fetch = +refs/heads/*:refs/remotes/bob/* 

私がそれらをセットアップしたとき、それらはすべて機能しました... 2010年に、私がそれらのリモコンを最後に使用したとき、2016年かそこらでまだ機能していました.

現在、バージョン 2.18.0 ではこれらが機能しないため、:/~ME/fooor:/~/foo表記を使用する必要があります。つまり、あなたがやろうとしていることが常に間違っているとは限りません。

于 2020-02-05T19:31:52.297 に答える