单一开发人员GIT工作流程(从简单的FTP迁移而来)


11

我正在尝试确定迁移到VCS对我来说是否明智。我是一个小型组织(5人)中的单个Web开发人员。由于以下原因,我想到了VCS(Git):版本控制,异地备份,集中式代码存储库(可以从家里访问)。

目前,我通常在实时服务器上工作。我进入FTP,进行修改并保存,然后重新上传并刷新。编辑通常是针对CMS的主题/插件文件(例如,concrete5或Wordpress)。这很好用,但不提供备份,也不提供版本控制。

我想知道如何最好地将VCS集成到此过程中。我打算在公司的Web服务器上设置一个Git服务器,但是我不清楚如何将更改推送到客户帐户(通常是同一台服务器上的VPS)-现在,我只需使用其详细信息登录到SFTP,直接更改。

我也不确定什么将明智地表示一个资源库-每个客户的网站都会得到自己的资源库吗?

任何见解或经验都将非常有帮助。我认为无论如何我都不需要Git的全部功能,但是基本的版本控制和事实上的云访问将非常有用。

编辑:我已经将其范围缩小到似乎最明智的两个选项。第一个基于ZweiBlumen的答案,即在实时服务器上进行编辑,然后将其提交到(外部)Git服务器。这样做的好处是我的工作流不会有太大变化(有额外的提交步骤,但其他方面是相同的)。

第二个选项是使用XAMPP在本地工作,然后从本地计算机提交更改。仅当站点上线时,我才将完成的文章从本地计算机上传到Web服务器(在最终提交到Git之后立即)。从理论上讲,这似乎还可以,但是如果该站点随后需要修改,并且我将它们放置在实时服务器上(通常这样做),那么我将需要手动复制本地存储区中已更改的文件,然后将这些更改提交给Git服务器。这似乎过分复杂,可能与我当前的工作流程相去甚远。

我认为总的来说,我会给#1选项一个机会,然后看看我如何继续。


1
关于git(或任何其他分布式VCS),要记住的一点是,至少从技术上讲,所有存储库都是对等的:您的本地存储库与实时服务器或备份存储库中的存储库一样“真实”。是您的工作流程策略为它们提供了结构-因此,如果您真的想继续在实时服务器上执行主要工作,则可以...
comestorm

谢谢,很高兴知道。Git固有的灵活性使得很难确定“最佳实践”的起点-这是有经验的用户POV的优势,但可以说是菜鸟的劣势!
melat0nin 2012年

Answers:


3

我所做的(使用Subversion,但也将与Git一起使用)是将所有内容都提交到一个Subversion存储库中,但是显然可以根据需要拆分为项目,分支和标签。然后,我将这些存储库签到实时服务器。因此,当我在开发机器上进行更改并将其提交到存储库时,通常只是在实时服务器上更新签出副本以使更改生效的一种情况。额外的好处是,如果我确实需要对实时服务器进行快速修复,则可以将其从服务器提交到存储库,并在我的开发机上更新工作副本。

我敢肯定还有其他方法可以解决这个问题,但是我发现这很简单,而且我的情况和您完全一样:一个小型组织中的单个开发人员(4人)。


1
感谢您的回复!这是否意味着您将快照拉至本地计算机,进行更改并提交更改,然后从实时服务器发出拉请求(通过SSH进入)?如果变化真的很小怎么办?您是否运行本地Web服务器进行开发?(我无法通过该过程来进行简单的CSS更改。我会发疯!)
melat0nin 2012年

1
对于较小的CSS更改,我将直接在服务器上进行更改,然后将更改从服务器提交到存储库。当我必须在站点上进行更认真的工作时,我将使用存储库中的最新版本来更新我的开发机上的站点。我猜只要将更改提交到存储库,您在哪里进行更改(服务器或开发机)实际上并不重要。
ZweiBlumen 2012年

那么,您为此使用什么工具?FTP使文件直接在服务器上更改,然后在后台打开SSH会话以一次又一次地对Git服务器进行提交?
melat0nin 2012年

1
是的,基本上就是这样。实际上,我使用Subversion。我们在Windows和Linux服务器上都有站点。在Windows I远程桌面上,使用TortoiseSVN更改CSS并提交。在Linux上,我使用SSH会话和vim进行更改(但我想也可以通过FTP进行更改)。
ZweiBlumen 2012年

我已经同意了您在服务器上进行编辑,然后通过SSH从那里提交的建议,这已经有好几天了。看起来工作真的很好,谢谢!
melat0nin 2012年

2

创建一个post-updatehook很容易,git archive当您将其推送到特定分支时,该hook会自动更新(出于安全原因,首选使用导出)Web服务器数据目录。

因此,使用此类钩子在某个地方(出于安全原因,我将其放置在与Web不同的服务器上)设置了git存储库。当然,您将需要测试服务器来测试较大的更改,这些更改可以在本地计算机上,也可以通过推送到其他分支进行更新。无论哪种情况,您都可以通过简单的提交和推送来绕过它进行琐碎的拼写和CSS修复。


1

我将按照以下步骤操作:

  1. 使用正确的公用/专用密钥对设置远程服务器以进行远程推/拉
  2. 设置两个分支测试并发布
  3. 在测试分支中的测试环境中进行本地开发
  4. 当您满意时,与发布分支合并并推送到远程服务器
  5. 钩住远程服务器以更新到最新版本

每个网站设置一个存储库,以防止它们彼此混乱。单独的分支使您可以避免将当前的“良好”版本锁定逐步转移到当前正在处理的内容上,这可能会起作用,也可能不会起作用。


因此,我是否理解正确-有两台服务器(1)用于Git,(2)实时网络服务器,以及一台本地开发计算机。开发是在本地完成的,然后推送到Git服务器,该服务器具有用于更新实时服务器的挂钩?
melat0nin 2012年

@ melat0nin这是一种方法。您也可以将实时服务器从git服务器拉出,作为cron作业。或者,您可以拥有2台计算机。本地开发人员机器和实时生产Web服务器。这样,每当您推送时,将回购从dev机器推送到生产机器就会更新到最新的发行分支。
Spencer Rathbun 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.