Version control 当我的工作副本需要在没有SSH访问的共享主机上时,如何利用源代码管理?

Version control 当我的工作副本需要在没有SSH访问的共享主机上时,如何利用源代码管理?,version-control,shared-hosting,Version Control,Shared Hosting,我正在尝试开发一个小玩具PHP项目,运行它最方便的地方是在一个共享主机上,我的博客维护不好。问题是,我无法在这个共享主机上运行Subversion,甚至无法通过SSH访问从主机访问外部存储库。如果我几个月前在主机更新时一直在思考,我可能应该多付几块钱来换一个更好的主机,但现在我无法证明花钱让第二个主机只用于辅助项目是合理的 这意味着我的项目的工作副本需要签出到我的笔记本电脑,而项目本身需要上传到共享主机才能运行。我最好的选择似乎是创建一个运行Linux的虚拟机,并从中开发所有东西,但我从过去的经

我正在尝试开发一个小玩具PHP项目,运行它最方便的地方是在一个共享主机上,我的博客维护不好。问题是,我无法在这个共享主机上运行Subversion,甚至无法通过SSH访问从主机访问外部存储库。如果我几个月前在主机更新时一直在思考,我可能应该多付几块钱来换一个更好的主机,但现在我无法证明花钱让第二个主机只用于辅助项目是合理的

这意味着我的项目的工作副本需要签出到我的笔记本电脑,而项目本身需要上传到共享主机才能运行。我最好的选择似乎是创建一个运行Linux的虚拟机,并从中开发所有东西,但我从过去的经验中知道,所造成的额外障碍,尽管可能很小,但足以让我停止启动虚拟机,只需花几分钟的时间来做一些我刚刚想到的小改变。我更希望能够启动我的编辑并开始工作

虽然我想我不是第一个遇到这种问题的人,但我在网上找到解决方案并没有多大成功。除了VM或“手动镜像”选项之外,可能没有其他选项,但如果有,我希望StackOverflow是找到它的地方



编辑:似乎有一些困惑,所以让我尝试澄清一下这里的共享主机基本上是我的开发服务器,但它没有svn或ssh。换句话说,我可以
svn checkout
到我的笔记本电脑,但我不能在共享主机上运行。类似地,我可以在共享主机上运行/测试我的代码,但我不能在笔记本电脑上运行/测试(技术上我可以,但它是Windows,我不想担心与PHP的Win-vs.-Linux差异,因为我确实希望它在某一点上公开,而且在那一点上它肯定是基于Linux的)您可以考虑编写一个自动将代码上载到主机的方法,以便在提交更改的任何时候,脚本执行:

  • 将代码的副本签出到临时目录中
  • 通过FTP(或您喜欢的任何方法)将代码上载到共享主机
  • 在传输成功后自行清理,可选择通过电子邮件通知您

Subversion在运行时为这些脚本提供了足够的信息,因此您可以变得更加复杂,只选择上载根据特定属性更改而更改或改变行为的文件,例如,但对于一个小项目,蛮力“将其全部复制”方法应该很好。

Git中也有钩子。Mercurial、Perforce和大多数其他版本控制系统也有钩子——解决方案的总体思路是全面可行的,尽管最初的海报特别提到了Subversion,所以这就是我所说的,尽管后期提交只是其中的一部分。由于工作副本位于另一台没有SSH的服务器上,因此我无法执行任何类似
svn diff
svn info
的操作。只要我想运行哪怕是一个微不足道的命令,我就必须将所有内容移回本地工作副本。如果这是最好的选择,我宁愿与虚拟机打交道,也不愿一直用FTP来回传输所有内容。谢谢你的建议。也许我误解了你的处境。在我上面概述的方法中,您可以在笔记本电脑上签出工作副本,在那里您可以对文件进行任何编辑,然后将更改提交给您的版本控制。从那时起,它向您的服务器发送数据的过程将完全自动化,并且永远不会有任何理由让数据从您的托管服务“流向另一个方向”,因为您唯一要进行更改的地方将是您的本地机器。您的存储库本身将托管在哪里?是的,您肯定误解了。在这种情况下,共享主机是dev服务器(实际上没有生产,至少目前没有)。由于“dev服务器”是一个共享主机,因此我无法在那里拥有实际的工作副本,因此我需要一种简单的方法来保持本地“svn工作副本”和远程“开发工作it副本”的同步。基本上,我只能
svn checkout
到我的笔记本电脑,但我不能在那里运行代码。我可以在共享主机上运行代码,但无法在那里
svn checkout
。这是否澄清了问题?