如何让 sshfs + VPN + git 成为一个可以忍受的工作环境?

如何让 sshfs + VPN + git 成为一个可以忍受的工作环境?

目前,我正在处理的项目的代码库位于远程公司服务器上。并且必须保持这种状态。而且远程git存储库不能公开。

我当前的设置是:

  • 连接到VPN
  • 运行sshfs以安装代码副本
  • 开始编写代码
  • 完成后:ssh到远程服务器并git在那里运行命令

问题在于,VPN 时不时会断线,所以我的sshfsmounth 会断掉,我的 IDE 会冻结。我要做的是手动重新连接 VPN,然后sshfs再次运行,然后重新开始工作。

但摔倒次数越多就越烦人VPN

所以我想知道是否存在sshfs某种缓存的设置,可以让我工作,并且仅在 VPN 恢复时同步更改。

这可能毫无意义,因为如果远程驱动程序不可用,则没有任何内容可写入。那么,使用某种watch东西并以rsync双向方式移动更改(无论是当我保存文件时,还是当我执行git pull)的其他设置怎么样?

我不能只使用 git clone,因为我无法重现整个环境以在“本地”工作(数据库和其他东西)

代码必须放在他们的服务器中,为了测试/查看我的工作,我必须访问一个 URL,即我的沙盒。每次我想查看我的更改时,我无法 git push。

答案1

我正在使用此 sshfs 选项来最大限度地减少延迟:

sshfs -o Ciphers=arcfour,compression=no,nonempty,auto_cache,reconnect,workaround=all [email protected]:/usr/local/gitdev/ ~/dev/code

它具有重新连接标志、所有 sshfs 解决方法、使用自动缓存和 arcfour chiper。

您可以在 sshfs 手册上阅读有关这些选项的内容,我发现至少对于我的设置而言,这些是最快的 sshfs 选项。

ETA:有关 sshfs 性能的更多信息请阅读此处:sshfs 性能

答案2

zecrazytux 是对的--为什么不按照git你应该的方式去做:通过克隆存储库,远程处理它,然后将更改推送回主存储库?

git push我认为你每次想要查看更改时“不能”查看工作内容(理想情况下,将其推送到开发分支,然后在测试并证明其可行后进行合并)没有理由这样做——很多人都这样做。post-receive如果你想要自动化这部分工作,你甚至可以使用钩子将更改部署到环境中。
(你显然不想这样做,但您没有给出任何理由,因此我拒绝接受您的问题的前提。)


坦白说,你无法让不可靠的网络连接“变得可以忍受”(特别是当你试图挂载网络文件系统时)——你可以像上面概述的那样远程工作,通过 SSH 进入系统并直接在系统上工作(screen这是你的朋友),或者调查并修复底层网络不稳定。
试图做其他事情来“让它变得可以忍受”是徒劳的(想想“飓风中的鸡尾酒伞”)。

答案3

我在家里通过 vpn + sshfs 使用 phpstorm IDE,它的 git 很慢,需要扫描大量文件。

我用https://github.com/ericpruitt/sshfsexec使用我的 ide 或我的终端,所有本地命令都会自动作为 ssh 远程命令执行,而且速度更快。

安装后,在 PHPSTORM 上:设置>Git>git 可执行文件的路径 => /home/username/bin/sshfsexec/git

答案4

我最近使用 mutagen 代替 sshfs,在处理不稳定的连接时效果会好得多。

https://github.com/mutagen-io/mutagen

mutagen sync create --name=test --default-owner-beta="USER_HERE" --default-group-beta="GROUP_HERE" --mode=two-way-resolved /localhost/path/to/code [email protected]:/remote/path/to/code

确保在远程开发服务器上安装代理。

干杯

相关内容