2011-03-23 118 views
3

我们的团队最近已迁移到git。使用Git更新生产服务器

我们有一些小的修改制作Web应用程序服务器

  • 具体的超热修补程序不能在我们的测试环境重现这些错误代码,这installaton
  • 一些调试语句

我认为,我们不能提交那些在服务器回购。

当我们有svn update合并更改文件或不合并。现在

git stash; git pull; git stash pop 

确实为我

的伎俩我怎么能自动检测这些情况下,当git stash pop会导致冲突

使得生产工作拷贝坏了?

我想他们会出现像be advised, pull cancelled (conflicts)

+2

可以在新分支中跟踪生产服务器上的这些小更改吗?我对任何未存储在存储库中的重要代码保持警惕,并且此设置感觉脆弱。 – sarnold 2011-03-23 08:36:49

+0

不,这些是“调试语句”,在这种情况下,我们需要另一个应用程序安装,而不是分支 – jonny 2011-03-23 08:48:25

回答

5

我不想承担在生产服务器上发生合并冲突的风险。这听起来对我来说都是错误的。

从你的文章中,我可以推断你有生产中的问题,你不能在测试/分期复制。为了帮助检测这些问题,您在应用程序中添加了其他仪器。这是一种常见的方法,尽管您应该尝试从Q & A(通常它的长期利益来看,这是最值得期待的)。

我推断的下一件事是您直接操纵生产服务器上的代码。你永远不应该这样做。你已经在使用git,它可以为你提供一个很好的灵活性来管理你的问题,还有更聪明的解决方案。 这里就是我想要到:

  1. 从服务器获取这些更改(创建一个补丁或东西)把这些变化到一个地方分支在你的开发回购
  2. 每当你改变你的主人头顶上的本地分支。本地解决冲突。
  3. 由于您已经嘲笑历史,因此您需要强制推入生产存储库,有关详细信息,请参阅How do I push amended commit to the remote Git repository?

也可以辩论你是否不想“增加”你添加的额外日志记录,使它成为你的非功能性需求的一部分。

+0

生产上的清洁工作树是纪律问题,我没有任何权力来强制执行 – jonny 2011-03-23 09:00:10

+0

'“productize”你添加的附加记录:非常好的一点 – jonny 2011-06-06 15:17:36

2

我宁愿发送邮件到解决手动

这些情况前:

  • 有Git仓库和Web文件之间的完全分离:
  • 不直接在工作树目录中工作(存储问题,以便有一个干净的工作树拉运算离子)

这将是最好推到bare repo with a post-update hook,并在一个单独的Git回购工作,你可以做你需要的拉动。


的说,我宁愿尝试解决在临时党支部的任何冲突(从git stash man page

git branch <branchname> [<stash>] 

创建并签出一个名为<branchname>从提交在启动新的分支其中<stash>最初创建,将<stash>中记录的更改应用到新的工作树和索引。
如果成功,并且<stash>是形式[email protected]{<revision>}的参考,则会丢弃<stash>。如果没有给出<stash>,则应用最新的一个。

如果您运行git存储保存的分支发生了足够多的变化,git存储应用因冲突而失败,这非常有用。由于在运行git存储库时,存储器被应用于HEAD的提交之上,因此它将恢复原始存储的状态而不产生冲突。

冲突解决后,该分支可以合并回主。

+0

我们有我们的中心回购gitosis。我意识到生产上的清洁工作树是纪律问题 – jonny 2011-03-23 08:54:04

+0

@jonny:刚刚添加了一种可能的方式来处理分支中的隐藏弹出步骤。 – VonC 2011-03-23 09:05:12