基本上我有这个脚本需要很长时间才能执行,偶尔会超时并且会在我的数据库周围留下半完整的数据.(是的,我知道在一个完美的世界中我会解决这个问题,而不是实现提交和回滚,但我不得不这样做)
这是我的基本代码(为简单而愚蠢):
$database = new PDO("mysql:host=host;dbname=mysql_db","username","password");
while (notDone())
{
$add_row = $database->prepare("INSERT INTO table (columns) VALUES (?)");
$add_row->execute(array('values'));
//PROCESSING STUFF THAT TAKES A LONG TIME GOES HERE
}
$database = null;
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如果那个while循环中的整个过程没有完成,那么我不希望插入的行保留在那里.我认为我可以在while循环的开头和结尾处使用提交/回滚来执行此操作,但不知道如何操作.
可能重复:
使用subversion进行部分提交
有什么办法我只能将文件中的一些更改提交给SVN吗?假设我正在研究2个新功能(或错误修复),它们都会影响同一个文件.我完成了1个功能,我只想提交其中一个更改.我意识到我可以为每个功能创建一个单独的分支,但这会以其他方式使事情变得复杂,不断在我可能正在同时工作的几个功能分支之间来回切换.
目前,当我需要这样做时,我会复制该文件,删除我不想提交的更改,然后提交.然后我把副本放回原来我刚刚提交的东西上,只留下我不想提交的更改.这可能是为了解决一个小错误修复可能提交1行所做的很多事情.
我知道有些人可能会说,你不应该这样做,因为提交整个文件的全部意义在于你确切地知道你提交了什么,并且它不会破坏代码.但由于您可以提交单个文件,因此这种情况没有太大区别,因为您仍然可能忘记提交与您正在更改的文件相关的其他文件,但仍会导致代码被破坏.或者同样忘记添加新功能所依赖的文件.
我正在使用安装了"Subclipse"的eclipse将我的更改提交到位于我的DropBox文件夹的存储库.
我使用Tortoise创建了一个存储库.我的实际项目位于存储库文件夹的根目录中,但不在主干或分支或标记文件夹中.
我成功创建,签出和提交了几次,但最近我开始收到提交错误:
org.apache.subversion.javahl.ClientException:svn:E200007:提交失败(详情如下):svn:E200007:Commit一次只能提交到一个存储库.所有目标都是同一工作副本的一部分吗?org.apache.subversion.javahl.ClientException:svn:E200007:提交失败(详情如下):svn:E200007:Commit一次只能提交到一个存储库.所有目标都是同一工作副本的一部分吗?
没有什么可以承诺......导致这个问题的原因是什么以及如何解决?
我正在研究一种通过Subversion命令行提交所有修改/添加文件的方法,不包括提供的黑名单.这可能吗?
如果我有,比方说,100个文件,我想提交,但该名单穿插是我七档不希望提交.有没有办法说"提交所有文件,不包括/path/to/file1.php,/path/to/file2.php,/path/to/file3.php"等....
例如,我必须做以下事情:
svn ci [list all files to commit in here] -m 'my commit message'
Run Code Online (Sandbox Code Playgroud)
但是,还有更好的方法吗?我找不到有关它的任何记录.
我在学习RequestDispatcher时正在编写一些基本代码.我知道当调用rd.forward()时,控制(和响应处理)将被转发到路径中指定的资源 - 在本例中是另一个servlet.但是为什么由于代码中前面的out.write()语句,这段代码不会抛出IllegalStateException(不是我想要的)?
我想我真正要问的是,这些out.write()语句将如何或何时提交?
谢谢,杰夫
public class Dispatcher extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.write("In Dispatcher\n");
String modeParam = request.getParameter("mode");
String path = "/Receiver/pathInfo?fruit=orange";
RequestDispatcher rd = request.getRequestDispatcher(path);
if(rd == null){
out.write("Request Dispatcher is null. Please check path.");
}
if(modeParam.equals("forward")){
out.write("forwarding...\n");
rd.forward(request, response);
}
else if(modeParam.equals("include")){
out.write("including...\n");
rd.include(request, response);
}
out.flush();
out.close();
}
Run Code Online (Sandbox Code Playgroud)
}
我读到添加提交时的--date参数可用于指定时间戳和时区偏移量.我很好奇是否有办法全局设置时区偏移,以便它与我的时区相匹配..我在EST,这是UTC的-0500,每当我提交并推送到Github,我的贡献永远不会出现在正确的天.IE浏览器.我是凌晨2点,但git将时区偏移设置为UTC.现在,当我将更改提交/推送到Github时,它们将显示为UTC时间晚上9点.
我现在有一些OCD表演了.
我正在开发一个使用git的应用程序,所以我需要测试它与git的集成.在我的git存储库中,我需要有另一个存储库(my_git_repo/tests/another_repo).如何在没有git子模块的情况下提交它?(我不希望只有一个文件的另一个远程存储库(在github/bitbucket等))
有任何想法吗?
有没有办法塔使用git配置中设置的git commit模板?我试图执行下面的命令,它尝试从命令提示符提交时创建一个模板,但不适用于塔.但是git hooks既适用于命令提示符,也适用于塔.
git config commit.template <template_file_name>.txt
Run Code Online (Sandbox Code Playgroud) 我通过删除旧文件并使用新名称添加另一个文件来手动重命名文件.如何在提交历史记录中撤消此操作并使用git mv?我需要将我的功能分支重新绑定到仍在使用旧文件名的已更新父级.我不想丢失旧名称文件和新名称文件的更改.
我想知道我们/他们的策略是否有任何樱桃采摘方式.换句话说,我想通过以下命令从dev分支中选择多个提交到主分支,
git cherry-pick HASH1 HASH2 HASH3 -n
Run Code Online (Sandbox Code Playgroud)
如果没有冲突,此命令应该接受所有引用的提交并准备未分级的更改.但是,如果发生冲突,我需要解决并继续挑选.对于所有冲突,我的意图是在开发中选择任何东西(这意味着--strategy-option = ours).
樱桃采摘时有没有办法提供这样的选择.