假设我有两台机器设置:
客户端
服务器
问题: 是否有可能从客户端连接到服务器,让我们说为了参数而通过SSH,并在登录服务器后调用Git命令,但是在客户端(本地)系统的文件上调用?
e.g。 SSH客户端(仅限ssh)----- SSH服务器(此处安装了ssh和git)
send command --> command: checkout to <client path>
send command---> command: check-in from <client path>
理由:换句话说,我不想为VCS安装软件客户端,而是希望SSH充当启动器;在Git的情况下,虽然git和cygwin解决方案的mysys都存在,但每个都有自己的缺点 - 所以我想在Linux机器上编译/设置全功能版本,但仍然允许源控制发生在窗户。
这可能吗? (不必是SSH,任何协议都可以,只要它不需要VCS的软件客户端)
我可以ssh到服务器,将客户端路径挂载到源文件,然后对该路径的所有文件执行版本控制命令吗?
答案 0 :(得分:1)
我可以ssh到服务器,将客户端路径挂载到源文件,然后对该路径的所有文件执行版本控制命令吗?
是的,你可以,很容易。看一下SAMBA for Linux或安装Windows Services for Unix,让客户端盒充当NFS服务器;无论哪种方式都可以。
就linux应用程序而言,如果它安装在/之后它必须经过网络才能到达文件是无关紧要的 - 文件系统驱动程序负责这一点。
因此,是的,如果您将c:\mysource
作为/mnt/windows/c/mysource
安装在Linux服务器上,则没有理由不能在该目录中的文件的linux框中使用git。结果当然会通过网络传输。
答案 1 :(得分:0)
除了Ninefingers的回答,如果远程机器无法直接到达客户端机器,则可以使用SSH端口转发。此功能在OpenSSH,Putty和许多其他客户端中可用。
通常,您使用端口转发来访问远程计算机网络上的服务。例如,要访问远程SSH服务器网络中10.0.0.4上的HTTP服务,您需要:
ssh -L 8888:10.0.0.4:80 user@remotehost
然后,使用客户端计算机上的浏览器访问localhost:8888
。
但是,您可以反过来使用相同的方法,并为远程计算机提供本地服务。对于Windows共享(SMB),您可以尝试以下操作:
ssh -R 9445:localhost:445 user@remotehost
(您应该在Windows中使用的任何SSH客户端中找到等效选项。)
然后从远程shell安装共享位置:
mount -t cifs //localhost:9445/SomeShare /mnt/mountpoint
我必须补充一点,我没有亲自测试,但值得一试。