ftp サーバーを使用していますが、そこに追加のソフトウェアをインストールできません。その上にgitリポジトリを作成し、ローカルPCにクローンすることは可能ですか? ローカルリポジトリを作成してftpにコピーしようとしました。それはうまくいきますか?ftp サーバーからクローンを作成するにはどうすればよいですか?
4 に答える
この件について議論する StackOverflow に関する他のさまざまな質問があります。
...あなたのケースに適した解決策があるかもしれません。
使用しているオペレーティング システムはわかりませんが、Linux ベースの場合は、FTP サーバーをFUSE + fuseftpを使用してローカル ファイル システムの一部としてマウントすることをお勧めします。Mac OS を使用している場合は、同様にMacFuseを試すことができます。(注: 私自身、fuseftp を試したことがないので、推奨または推奨しない立場にはありません。) Windows にも同様の機能があることは間違いありません。
次に、マウントされたディレクトリで実行し、ローカルリポジトリであるため、そこからプッシュおよびプルできるはずです。各プッシュの後に実行されるサンプルフックgit init --bare
も有効にする必要があります。そうしないと、リポジトリ URLを使用してサーバーと対話するときに問題が発生します。post-update
git update-server-info
ftp://
はい、うまくいくはずです。その方法についても、この他の回答を参照してください。
ftp://
URL でプロトコル指定子を使用するだけで、HTTP 経由でアクセスする場合と基本的に同じです。
git clone ftp://username:password@ftp.server.net/repos/project.git
ノート:
cloningだけを要求しましたが、リモートリポジトリに何かを書き戻す必要がある場合 (つまり、 pushも)、裸の FTP セットアップでは運が悪く、サーバーで追加のソフトウェアを実行する権限がありません。
FTPアクセスには、他のSOの回答(上記のリンク)またはこの投稿(FTPサーバー/構成に応じてアクセスできないファイルについて)で示唆されているように、注意事項がないわけではありません。
git-clone の man ページには、FTP トランスポートは「非推奨」になり、さまざまな理由で避けるべきであると書かれています。そのメモは単なる間違いであることを願っています。
a) レポを共有するための唯一のオプションとして FTP しか持っていないのに、すでに十分に惨めな貧しい仲間を罰することは、非常に友好的でない考えのように思えます。(他のオプションがある残りのユーザーは、とにかくそれらを使用することを好みます。)
b) gitremote-helpers のマニュアル ページと矛盾しているように思われます。このマニュアル ページでは、ftp トランスポートについても明示的に言及されていますが、それに反対するものは何もありません。
c) すべてのトランスポートには制限/メリットがあり、FTP も例外ではありません。(トランスポート ヘルパーのコマンドを介して
capabilities
、ツールも問題なく、何に使用し、何に使用しないかを交渉できます。)FTP が実用的な代替手段であり続ける限り、git クローン作成が引き続き FTP で機能することを願っています (そしておそらく、その恐ろしいコメントが実際に意味するのは、git がそれをネイティブにサポートしていないということです)。
Git がサーバー上で実行されている場合に機能します。
しかし、あなたが説明していることから、そうではないと思います。
git-ftp プロジェクトツールを使用して、これを 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