我有一些旧的遗留项目偶尔会偶尔使用,我想在git工作流程中集成 - 主要是为了我,但是可以选择在某种程度上进行协作后面。
第一个问题是访问项目代码的唯一方法是(仅)ftp-only。 提供商没有提供shell访问权限。
第二个问题或禁令是第三方可能会更改实时ftp服务器上的文件(我知道丑陋)而根本不使用git,当我使用一些后挂钩推送时方法,这会打破。不幸的是,教导那些外部用户git工作流是没有选择的,因为无知是幸福。
我真正想做的是以某种方式跟踪那些外部变化(2)并使用git为我的开发工作流程带来好处。
想象一下,我有一段时间没有碰过一个项目,当我回来时,我想看看已经做了什么。
但我真的很困惑我应该如何以及在哪里设置存储库。
答案 0 :(得分:3)
通过FTP进行Git部署非常好git-ftp
。不幸的是,这是一种方式,即它假设目标文件只是由你(并通过git-ftp
)更新。
因此,对于您的情况,您必须在发生远程更改时创建某种合成历史记录,并且唯一的方法是获取文件,然后在它们之间手动创建“delta”。所以,为此,我要使用@VonC - 您必须将文件传回(rsync
这样做效率很高,如果它不可用,请谷歌搜索一个能够使用以下功能爬行远程层次结构的实用程序FTP协议本身并仅获取丢失/更新的文件),然后让Git知道更改。
此过程可以在单独的分支上进行,也可以在临时的分离分支上完成。基本上,您在上次查看远程文件时表示远程文件状态的分支,然后在结帐时运行同步程序。 (请注意,这样的程序必须跟踪删除,也就是说,它必须删除在远程端删除的本地文件。)然后运行git add --all .
使Git阶段进行全部提交更新的文件,所有删除,并添加所有当前未跟踪的文件。然后记录提交。此提交实际上表示对远程进行的更改。然后,您可以根据此状态进行进一步的工作。
答案 1 :(得分:2)
如果您没有shell访问权限,则意味着您需要在本地设置您的仓库。
它的内容将是你通过ftp从服务器获得的内容 问题“How to use rsync over FTP”包含一些通过sftp镜像远程文件集内容的方法。
获得该内容后,即可:
mirror
分支,您将使用服务器的镜像更新(在推回任何内容之前)dev
分支,您可以将镜像分支合并到其中,以及添加新功能的位置。您可以将新文件从那里通过ftp推送回服务器。让镜像镜像服务器上的内容是快速比较您在dev
上剩余的内容以及当前服务器上的内容的好方法。