在没有VCS客户端的情况下在本地文件系统上使用远程版本控制(VCS)命令

时间:2010-02-19 18:48:30

标签: git ssh

假设我有两台机器设置:

客户端

  • 我们假设一个Windows框
  • 我们假设这是一个开发框,因此所有要置于源代码管理下的文件都将是 在这里
  • 我们假设没有安装源控件

服务器

  • 我们假设一个linux盒子
  • 我们假设Git是首选的源控件(已安装)
  • 启用SSH

问题: 是否有可能从客户端连接到服务器,让我们说为了参数而通过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到服务器,将客户端路径挂载到源文件,然后对该路径的所有文件执行版本控制命令吗?

2 个答案:

答案 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

我必须补充一点,我没有亲自测试,但值得一试。