回滚Salesforce中的更改

回滚Salesforce中的更改,salesforce,apex-code,visualforce,Salesforce,Apex Code,Visualforce,我刚刚开始在Salesforce为我的公司做适度的web开发工作,我正在寻找一些关于部署过程的反馈/见解。现在看来,我们将使用VisualForce和apex进行大量定制工作。我想知道的是,如果我把我的生产组织(数据或元数据)搞砸了,有没有办法回滚到快照或以前发布的仍然有效的组织版本?对于平庸的开发工具,我担心当bug出现时,我不会有一个很好的快速解决问题的方法 我在这里读到了关于设置源代码管理的不同方法: 但我还没有发现有人经历过本质上恢复更改集或更改分支的过程。salesforce内置的保

我刚刚开始在Salesforce为我的公司做适度的web开发工作,我正在寻找一些关于部署过程的反馈/见解。现在看来,我们将使用VisualForce和apex进行大量定制工作。我想知道的是,如果我把我的生产组织(数据或元数据)搞砸了,有没有办法回滚到快照或以前发布的仍然有效的组织版本?对于平庸的开发工具,我担心当bug出现时,我不会有一个很好的快速解决问题的方法

我在这里读到了关于设置源代码管理的不同方法:


但我还没有发现有人经历过本质上恢复更改集或更改分支的过程。salesforce内置的保护是否足够好,我就不用担心生产中的bug了?我是否应该不用担心必须恢复更改集?

处理此问题的方法之一是正确使用与生产组织关联的沙箱组织。当您使用另一个沙箱组织进行主要开发并部署到生产环境中时,您可以始终保持一个沙箱组织,该组织拥有所有内容的“受祝福”实例。如果在部署到生产环境的dev沙箱中的新开发之间发生严重错误,您可以从您的幸运沙箱向前滚动,以恢复到以前完全正常工作的状态

也就是说,当你问到不要担心生产中的bug时,你就明白了。并不是说它们不会发生,因为它们会发生,而是你很快就会开始对破碎的含义有不同的理解。变更集只是从一个组织到另一个组织进行变更的一种方式,也是平台上最近的一项开发。它们有一些限制,比如不移动自定义设置数据,但通常工作得很好

但是,当您准备好了好的单元测试,再加上所有其他强加的引用完整性检查时,可以说“破坏构建”并希望在不同的时间点恢复到所有内容的全局快照,这是事实。根据我的经验,更频繁的情况是,您将把孤立的单元恢复到以前的版本,并且可以通过沙盒或源代码管理来实现这一点,方法是向前推一个早期版本,直到找到修复程序


Adam

我一直在应用程序交换上研究一个应用程序,它至少看起来能满足我的需求。这个产品是。有趣的是,我在梦工厂采访的销售人员告诉我,salesforce在内部使用他们的应用程序来管理变更。我觉得很遗憾,我的许可证中没有这个功能,但是。。。以下是我发现的对我的具体问题有帮助的细节:

拍摄组织元数据快照并将其复制或部署到其他组织的能力。这将允许我部署/回滚更改


能够区分2个不同的快照(来自不同的组织)并查看更改的细节。这将有助于我在出现问题时找到问题的原因。

我要补充Adam的答案,即您也可以使用一个开发人员沙盒作为生产备份。只需在主要部署之前启动一个back,这样您就可以获得整个配置的副本。然后,您可以从该环境重新部署到生产环境。这实际上就是我所说的拥有一个沙箱组织的意思,它拥有所有受祝福的实例。但是,将其称为生产备份更为明确,尽管有些人正确地质疑在沙箱中进行生产备份是否明智。听起来很不稳定;)你能更详细地向我介绍一下你将如何从受祝福的沙盒或版本控制中推进一项更改吗。您会使用元数据api/ant脚本吗?回滚某些内容似乎需要能够删除新的自定义对象或字段。我知道你不能用变更集删除东西。您可以使用元数据API来实现这一点吗?我个人喜欢通过Eclipse使用元数据API。您可以从任何一个组织部署到任何其他组织,在实际部署任何东西之前,它提供了一个很好的验证过程。因此,对于一个开发组织,您可以在Eclipse中打开它,选择要部署的所有组件,选择它部署到的组织(在本例中是生产组织),并在执行之前验证它是否会破坏任何东西。如果在部署后发现bug,而这些bug无法通过开发人员的后续修复/部署来解决,那么您可以从prod备份组织推送,替换从开发人员部署的内容,以“还原”到以前的配置。>从元数据中删除对象?不可以。但是,您可以完全覆盖由于新功能而创建了新字段的对象。然后,如果有必要,只需手动删除任何不再需要的新自定义对象。有人用过吗?几年前我们演示了他们的产品,非常好。我们最终使用了Eclipse(Force.com IDE),但从来没有真正开心过。无论您使用什么工具,沙盒环境都是必不可少的。