我继承了一个项目,我们正在使用git.我们有许多环境(开发,测试,产品).前一个团队基本上使用相同的帐户,密码,sid等在每个实例上重新创建了所有内容.唯一改变的是/ etc/hosts中的主机名映射.这样它就可以连接到不同的数据库服务器.
现在,这会产生一个问题,因为我不能,例如复制一个模式,以便开发人员可以使用与主开发服务器相同的数据库实例来运行实验.我基本上必须在另一台主机上创建一个新的数据库实例,并将/ etc/hosts更改为指向该新服务器.
虽然这是目前的工作设置,但我正在尝试找到一种方法来为每个实例维护不同的配置文件.即:applicationConfig.xml取决于分支的不同版本.我猜想有人可能会认为在repo中保留数据库凭证并不是一个好主意,但让我们暂时忽略它.
另一种可能需要具有不同版本文件的情况可能是调试.假设我正在使用javascript记录器框架,并且我添加了我不希望随生产版本发布的调试代码.我不想在开发/测试时添加记录器内容,然后在发布之前再次将其删除.人们可能会忘记这样做.
处理不同分支的文件的不同"版本"的正确方法是什么?有没有办法让一个分支与master上的最新代码保持同步,但是有一些配置/代码文件被更改了?我不希望它自动保持同步,但我希望能够不合并配置文件(或它们的一部分),而不是完全忽略它们(?).例如:不合并第6,7行(db用户名和密码),但将其他更改合并到文件中.
我在CentOS上运行ruby脚本,并通过rvm(1.9.3)安装ruby.
我在.bash_profile中设置了NLS_LANG变量.
[app@box stasis]$ echo $NLS_LANG
en_US.UTF-8
[app@box stasis]$ which ruby
~/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
Run Code Online (Sandbox Code Playgroud)
但是当试图通过ruby(oci8驱动程序)访问它时,它无法找到它:
1.9.3-p194 :001 > ENV['NLS_LANG']
=> nil
Run Code Online (Sandbox Code Playgroud)
访问其他变量似乎工作:
1.9.3-p194 :004 > ENV['USER']
=> "app"
Run Code Online (Sandbox Code Playgroud)
我的脚本显示以下内容: Warning: NLS_LANG is not set. fallback to US7ASCII.
我正在从ruby脚本运行sqlplus(执行一些.sql文件),并且特殊字符都搞砸了.
我怎样才能看到价值?
我目前正在使用C#并开发一些使用sharepoint Web服务作为数据源的Silverlight应用程序.
sharepoint管理员决定,为了"隔离"用户,他们必须多次创建相同的共享点列表,并授予每个分支用户访问该分支的相应列表的权限.
这会产生一些问题,因为我必须为每个分支设置sharepoint列表的guid,并编译同一个应用程序的5个不同版本.
最终我决定创建一个ListProperties类,并将当前分支的名称传递给方法,以便它返回正确的guid.
所以现在,我将变量(分支)设置为" BRANCH-A ",编译并将应用程序重命名为"AppBranchA.xap".然后对每个分支执行相同的操作.
有没有办法在编译时传递一个字符串并让变量(希望应用程序名称也自动更改)?
我愿意听到其他方法同时管理多个构建.
谢谢,
我有一个弹簧控制器UserController,我有以下方法(业务逻辑不包括在内):
@RequestMapping(value = "new", method = RequestMethod.GET)
public String getNewUserForm(Model model) {
model.addAttribute("action", "Create");
model.addAttribute(new User());
return "users/edit";
}
@RequestMapping(value = "create", method = RequestMethod.POST)
public String getCreateUser(@ModelAttribute("user") User user, BindingResult result, RedirectAttributes attr) {
attr.addFlashAttribute("user", user);
return "redirect:view";
}
@RequestMapping(value = "view", method = RequestMethod.GET)
public String getViewUser(Model model) {
return "users/view";
}
Run Code Online (Sandbox Code Playgroud)
我最终得到了三个"动作"(新的,创造和视图).我想要实现的是:app.com/users/new在浏览器中输入.将users/edit显示"创建用户"表单.提交表单时,它会调用users/create (POST).成功创建用户后,我想将用户转发到users/view,并在不可编辑的页面中显示输入数据.我不能只返回view因为那时网址仍然存在app.com/users/create.我想读它app.com/users/view.
现在,我正在使用一个RedirectAttributes对象,结合返回redirect:view,它的工作原理.但感觉应该有更好的方法来实现这一目标.我尝试使用redirect:view没有RedirectAttributes …
我已经为工作中的应用程序创建了一个flyway项目.事实证明,其中一个开发人员已经在TEST上执行了一些SQL语句,然后我才准备好飞路设置进行测试.
我的sql脚本有几个语句:
ALTER TABLE "TABLE1" MODIFY ("NAME" VARCHAR2(75 CHAR));
ALTER TABLE "TABLE2" DROP ("BOARD_ID");
ALTER TABLE "TABLE3" ADD CONSTRAINT "SYS_C0022270" CHECK ("ID" IS NOT NULL) ENABLE;
Run Code Online (Sandbox Code Playgroud)
应该在语句#2上删除的列已经在我们的TEST实例上手动删除.它还没有被我们的PROD实例删除,我想通过迁移而不是手动来实现.
显然,我没有在PROD上运行迁移而没有先在TEST上尝试(比这三个查询要多得多).
但是,由于我遇到问题的迁移是第一个在线,它无法继续.
有没有办法强迫它通过?我知道该列已被删除.我可以再次创建它,然后让迁移删除它.但是我可能还有其他可能失败的查询(创建可能已存在的种子数据等).我不希望停止我们的部署.
除了从PROD再次克隆我们的数据库并让开发团队在准备一组新的迁移时停止开发之外的任何想法?