Gitリポジトリでリモートファイルを編集する

Gitリポジトリでリモートファイルを編集する

Webアプリケーション用の開発サーバーとして使用するリモートLinuxシステムがあります。環境をローカルで再現できず、ファイルをリモートサーバー上で実行する必要がありますが、ローカルで(vimで)編集したいと思います。

このリモートサーバー上のファイルはGitを介して管理されます。私は通常、一度に何百ものファイルのうち1〜5個だけを編集します。

提案された回避策と正しく機能しない理由:

sshfs:この解決策は素晴らしいようですが、いくつかのバグがあります。

  • ローカルエディタは保存中に数秒間停止します。ネットワーク遅延が発生した場合、非同期的に保存されません。
  • sshfsが有効になっている間にネットワークがダウンした場合は、マウント解除のためにハッキング操作を実行するまで、実際にはファイルシステムの対応する部分をブロックします。http://sourceforge.net/p/fuse/mailman/message/26936619/
  • 編集中のファイルのローカルコピーを作成するのではなく、データを継続的に同期するため、全体的に非常に遅くなります。

重力による加速度:

  • 作業速度が遅い。ファイルを開くには時間がかかり、ディレクトリツリーはキャッシュされません。また、vimがファイル権限を踏みにじるバグ(5年以上)があります。これは、リモートSSHを介して権限を継続的に更新する必要があることを意味します。

同期:

  • これはgitリポジトリなので、頻繁にブランチを変更する必要があるかもしれません。時には、リモートサーバーが私を更新する必要があるかもしれませんが、その逆も同様です。全体的に、これは複雑さを増やし、リモートサーバーの変更を確認しようとするたびに手動同期が必要です。

端末を介してリモートシステムでvimを使用する:

  • キーストロークが遅れて狂います。

FTPプロトコル

  • 生成された一時ファイルにはランダムな名前があるため、どのタブが何であるかはわかりません。
  • リモートサーバーを更新するには、vimを閉じる必要があります(愚かさ)

明らかに良い方法がありますか?Windowsでは、デフォルトでローカルで編集するファイルの一時コピーを作成して保存すると、バックグラウンドでファイルを同期するwinSCPを使用しました(保存後すぐにエディタで続行できます)。

emacsに関するこの質問を見つけましたが、emacsを使用したくありません。 リモートサーバーにSSHで接続し、ローカルEmacsを使用してファイルを編集する方法は?

答え1

リストから欠落しているオプションの1つはVimのものです。ネットワークVimに付属のプラグイン(コメントで@godlygeekが最初に言及しました)。:edit scp://hostname/path/to/file起動時に次のURLを指定することもできます$ vim ftp://hostname/path/to/file。複数のプロトコルをサポートし、:write元のファイル名を維持しながらダウンロード/アップロードを透過的に(各プロトコルで)処理するため、ファイル形式の検出などは引き続き機能します。

答え2

これは本番システムに許可されているソリューションではないかもしれませんが、GitでBitTorrentSync(またはその他)などの同期サービスを実行できます。私はラップトップとデスクトップの間でこれを行うのに最適です。

コミットまたはプッシュする代わりに、自宅でローカルのgitリポジトリにあるファイルを変更できます。操作を開始すると、同じ修正操作を実行できます。そこで終わってコミット/プッシュできます。

私のデフォルトのBitTorrentSyncフォルダである〜/ Gitフォルダがあります。このフォルダ内には、各リポジトリの複数のサブディレクトリがあります。 BitTorrentSync ".Sync"フォルダを ".gitignore"に追加したことを確認してください。

関連情報