工作流 Git FTP,适用于具有潜在外部非 git 用户的旧项目



我有一些旧的遗留项目,我偶尔会处理这些项目,我想将它们集成到 git 工作流程中 - 主要只为我,但以后可以选择在某些层面上进行协作可能会很好。

  1. 第一个问题是访问项目代码的唯一方法是仅 ftp。提供程序不提供外壳访问权限。

  2. 第二个问题或禁忌是第三方可能会在根本不使用 git 的情况下更改实时 ftp 服务器上的文件(我知道很丑),当我使用一些后钩子推送方法时,这会中断。不幸的是,教那些外部用户一个 git 工作流程是没有选择的,因为无知是幸福的。

我真正想做的是以某种方式跟踪这些外部更改 (2),并通过使用 git 为我的开发工作流程带来好处。

想象一下,我已经有一段时间没有接触一个项目了,当我回来时,我想看看做了什么。

但是我真的很困惑我应该如何以及在何处设置存储库。

通过FTP进行Git部署的超级好是git-ftp。不幸的是,这是一种方式,即它假设目标文件仅由您(并通过git-ftp)更新。

因此,对于您的情况,您必须在发生远程更改时创建某种合成历史记录,唯一的方法是获取文件,然后手动创建它们之间的"增量"。所以,为此,我支持@VonC - 你必须将文件传输回来(rsync有效地做到这一点,如果它不可用,谷歌搜索一个实用程序,该实用程序能够使用 FTP 协议本身抓取远程层次结构并仅获取丢失/更新的文件),然后让 Git 知道更改。

此过程可以在单独的分支上完成,也可以在临时的一次性分支上完成。基本上,您在上次查看远程文件时将分支从您认为代表远程文件状态的点上分叉出来,然后在签出时运行同步程序。 (请注意,这样的程序必须跟踪删除,也就是说,它必须在本地删除在远程端删除的文件。 然后运行 git add --all . 以使 Git 阶段用于提交所有更新的文件、所有删除以及添加所有当前未跟踪的文件。 然后记录提交。 此提交实际上将表示对远程所做的更改。 然后,您可以基于此状态进行进一步的工作。

如果您没有 shell 访问权限,这意味着您需要在本地设置存储库。

它的内容将是您将通过ftp从服务器获得的内容。
问题"如何在FTP上使用rsync"包含一些通过sftp镜像远程文件集内容的方法。

拥有该内容后,您可以执行以下操作:

  • 一个mirror分支,您将使用服务器的镜像进行更新(在推送任何内容之前)
  • 一个dev分支,您可以将镜像分支合并到其中,以及添加新功能的位置。您可以通过ftp将新文件从那里推送回服务器。

让分支镜像服务器上的内容是快速比较您留在dev上的内容和服务器上当前的内容的好方法。

最新更新