rs7*_*s77 7 git deployment version-control stylesheet reversion
我目前在一家小型非技术组织工作,并被赋予了编写组织网站的角色.虽然我很享受这项任务并且在网络开发方面学到了很多东西,但我遇到了一些问题,我希望有人可以帮助我,或者至少指出我正确的方向.
我工作的网站有子域,每个子域都有自己独立的WordPress安装 - 因为这是负责更新内容(等)的用户类型最简单的"后端"管理面板.
在组织内部,我在营销经理(MM)下工作,并根据他的风格指南和线框进行编码.
虽然我们从年初开始只使用一个子域,但项目相对简单明了.但是,最近工作流程变得有点复杂,因为我们的原始子域已被复制到其他子域.每个新子域都会对其样式表进行少量编辑(例如,背景的不同图片,此处和那里的颜色略有不同等).
目前管理所有不同的子域名一直是"可以忍受的",但是现在正在制造骆驼的吸管是MM现在已经看到最终产品所需要的轻微转变.我对样式表的逆转问题是,首席执行官将在一周内说他喜欢改变"X",然后作为MM和我继续修改网站(到现在的"Z"),将在另一周说明他希望我们将"X"更改为"W",但保留"Y"中的大部分更改.
我正在寻找的东西允许:
那里有什么能解决这些问题吗?如果是这样,什么?
谢谢你的帮助!
PS - 我现在正在学习Git,它似乎很好地完成了"跟踪文件更改".但是,还没有了解到还原变化.也许对于我的最后一点,我正在考虑创建一个shell脚本来自动将文件上传到他们的文件夹.Git也这样做吗?
附录(alexbbrown)
我遇到了类似的问题:我运行了一个自定义版本的mediawiki,我在版本化的核心中安装了各种扩展(使用svn).每个扩展都需要confit文件中的一个部分,但confit文件还需要为每个部署进行本地配置.我本可以使用包含它来实现它,但它们不会被版本化; 每次重新分支是一件苦差事.+ g经验值得到一个很好的答案.
Git会让你做你需要的.
我将使用包含每个子域的单个存储库作为分支,因为根据我的经验,这将允许您以最简单的方式在子域之间移动更改.
我将假设一个结构,你有一个core分支,以及几个subdomainX分支,每个分支都有自己的本地变化来维护.我还假设您有一个develop分支,您可以在其中进行核心更改.
您需要执行以下几项关键操作:
将变化从发展转变为核心
git checkout core
git merge develop
Run Code Online (Sandbox Code Playgroud)
将更改应用于子域分支.对于每个子域运行
git checkout subdomainX
git rebase core
Run Code Online (Sandbox Code Playgroud)
或者如果你喜欢合并而不是rebase(我发现这个案子过于混乱 - 但其他人可能不同意)
git checkout subdomainX
git merge core
Run Code Online (Sandbox Code Playgroud)
如果你有很多子域分支,那么我会编写这个脚本.这会将名称中包含"subdomain"的所有本地分支重新绑定到core.
for i in $( git branch | cut -b 3- | grep subdomain ) ; do
git checkout $i
git rebase core
end
Run Code Online (Sandbox Code Playgroud)
首先,您需要要应用的更改的SHA(如果您还没有,请将其签入).
接下来,您将把这个变化拉入开发分支,然后进入 core
git checkout develop
git cherry-pick THE_SHA_OF_YOUR_CHANGE
git checkout core
git merge develop
Run Code Online (Sandbox Code Playgroud)
然后,您只需运行上面的脚本,将更改推送到所有子域分支.
git checkout develop
git revert THE_BAD_SHA
git checkout core
git merge develop
Run Code Online (Sandbox Code Playgroud)
然后运行脚本.
如果两个分支被调用subdomainA,subdomainB你可以这样做
git diff subdomainA subdomainB
Run Code Online (Sandbox Code Playgroud)
core- 即本地更改.可以通过以下方式获取对文件的更改:
git diff subdomainA core
Run Code Online (Sandbox Code Playgroud)
实际的变更集列表
git log core..subdomainA
Run Code Online (Sandbox Code Playgroud)
有两种方法可以解决这个问题:
rsync用来避免复制现有文件等).这样做的好处是它很快,并且不需要在部署到的服务器上使用git.bare存储库设置为所有存储库的原点,并且它将占用更多空间.(然而,IMO在这种情况下的优势超过了缺点,我会使用这种方法).| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |