web-dev-qa-db-ja.com

FTPサーバー上のGitリポジトリ

FTPサーバーを使用していますが、追加のソフトウェアをインストールできません。その上にgitリポジトリを作成してローカルPCにクローンを作成することは可能ですか?ローカルリポジトリを作成してftpにコピーしようとしました。それは機能しますか? FTPサーバーからクローンを作成するにはどうすればよいですか?

15
Szymon Musioł

StackOverflowには、このテーマについて説明している他のさまざまな質問があります。例:

...あなたのケースに適した解決策があるかもしれません。

使用しているオペレーティングシステムはわかりませんが、Linuxベースの場合、tryはFTPサーバーをの一部としてマウントすることです。 Fuse + fuseftp のローカルファイルシステム。 Mac OSを使用している場合は、同様に MacFuse を試すことができます。 (n.b.私自身、fuseftpを試したことがないので、推奨または推奨する立場にはありません。)Windowsにも同等のものがあることは間違いありません。

次に、shouldは、マウントされたディレクトリでgit init --bareを実行し、ローカルリポジトリであるためプッシュアンドプルできます。また、サンプルのpost-updateフックを有効にして、各プッシュの後にgit update-server-infoが実行されるようにする必要があります。そうしないと、ftp://リポジトリURLを使用してサーバーとやり取りするときに問題が発生します。

6
Mark Longair

Gitがサーバーで実行されている場合は機能します。

しかし、あなたが説明していることから、そうではないと思います。

5
Kristian J.

はい、動作するはずです。方法については、 この他の回答 を参照してください。

これは基本的にHTTP経由でアクセスするのと同じですが、URLでftp://プロトコル指定子を使用するだけです。

git clone ftp://username:[email protected]/repos/project.git

注:

  1. cloningだけを要求しましたが、リモートリポジトリに何かを書き戻す必要がある場合(つまり、Pushも)、裸のFTPセットアップで、サーバー上で追加のソフトウェアを実行する許可がない場合は運が悪いです。

  2. FTPアクセスには注意が必要です。他のSO回答(上記のリンク)、または この投稿はこちら (FTPサーバーに応じてアクセスできないファイルについて)) config)。

  3. git-clone man page は、FTPトランスポートが「非推奨」になり、さまざまな理由で回避する必要があることを示しています。そのメモはうまくいけば単なる間違いです。

    a)リポジトリを共有する唯一のオプションとしてFTPだけを持っているだけですでに十分に惨めな貧しい人々を罰することは、非常に不親切な考えのように思えます。 (他のオプションがある残りの人は、とにかくそれらを使用することを好むでしょう。)

    b) gitremote-helpersのマニュアルページ と矛盾しているようです。これもftpトランスポートについて明示的に言及しており、それに反対するものは何もありません。

    c)すべてのトランスポートには制限/メリットがあります。FTPも例外ではありません。 (トランスポートヘルパーのcapabilitiesコマンドを介して、ツールは問題なく、何に使用するか、何を使用しないかをネゴシエートできます。)

    うまくいけば、gitのクローン作成はFTP上で機能し続けるでしょう(そしておそらくその恐ろしいコメントが実際に意味するのは、gitがそれをサポートしていない自然にということです) FTPは実用的な代替手段であり続けます。

3
Sz.

git-ftp project ツールを使用して、これをftpサーバーにデプロイできます。使い方は簡単で、ローカルサーバーにインストールしてリモートで展開できます。これが私にとってうまく機能した基本的な構成です:

  - git config git-ftp.user YOUR_FTP_USERNAME # ftpuser
  - git config git-ftp.password YOUR_FTP_PASSWORD # ftppass
  - git config git-ftp.url YOUR_FTP_SERVER # ftp.domain.com, might be a path to subdirectory ftp.domain.com/public_html
  - git config git-ftp.syncroot public_html/ # optional if you only want to Push a part of your repository
  - git ftp init
  - git ftp Push
1