2

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

  1. 第一个问题是访问项目代码的唯一方法是(s)ftp-only。提供者没有提供 shell 访问权限。

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

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

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

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

4

2 回答 2

3

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

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

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

于 2013-09-08T17:51:17.417 回答
2

如果你没有 shell 访问权限,这意味着你需要在本地设置你的 repo。

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

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

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

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

于 2013-09-08T00:12:47.507 回答