[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: target cannot be lock problem

From: HuiHuang <yellow.flying_at_yahoo.com.cn>
Date: Fri, 17 Jul 2009 19:21:48 +0800

Hey,

I think this part is where the difference is produced.

          for (j = 0; j < components->nelts; j++)
            {
              svn_pool_clear(iterpool1);
              component = APR_ARRAY_IDX(components, j, const char *);
              new_base_dir = svn_dirent_join(new_base_dir, component,
                                             iterpool1);
              lock_err = svn_wc_adm_open3(&base_dir_access,
                                                     NULL,
                                                     new_base_dir,
                                                     TRUE, /* Write lock */
                                                     -1, /* lock levels */
                                                     ctx->cancel_func,
                                                     ctx->cancel_baton,
                                                     result_pool);
              if (lock_err)
                {
                  if (lock_err->apr_err == SVN_ERR_WC_NOT_DIRECTORY
                      || lock_err->apr_err == SVN_ERR_WC_LOCKED)
                    svn_error_clear(lock_err);
                  else
                    {
                      error_happened = TRUE;
                      break;
                    }
                }
              else
                {

And here is the most possible error happening place.
[[[
                  check_err = svn_wc_adm_probe_retrieve(&adm_access,
                                                        base_dir_access,
                                                        target,
                                                        iterpool1);
                  if (! check_err)
                    {
                      rel_target = svn_dirent_is_child(new_base_dir, target,
                                                       iterpool);
]]]
It should step into this if phase and then break.

                      if (rel_target == NULL)
                        rel_target = "";
                      commit_packet = create_commit_packet
                                        (apr_pstrdup(result_pool, new_base_dir),
                                         apr_pstrdup(result_pool, rel_target),
                                         base_dir_access, result_pool);
                      APR_ARRAY_PUSH(*commit_packets, commit_packet_t *)
                        = commit_packet;
                      break;
                    }
                  svn_error_clear(check_err);
                  SVN_ERR(svn_wc_adm_close2(base_dir_access, iterpool1));
                }
            }

So can you help me to find out why it does not come into above if phase?

Thank you.
Huihuang

------------------
yellow.flying
2009-07-17

__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2372027
Received on 2009-07-17 13:23:04 CEST

This is an archived mail posted to the Subversion Dev mailing list.