Uploaded image for project: 'Subversion'
  1. Subversion
  2. SVN-4390

parallel nested checkout not possible with wc-ng

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.7.x
    • Fix Version/s: ---
    • Component/s: unknown
    • Labels:
      None

      Description

      As reported in http://svn.haxx.se/users/archive-2013-07/0066.shtml,
      attempting a checkout within a working copy that has outstanding work queue
      items fails. However, it succeeds if the enclosing working copy is locked and
      does not have work queue items.
      
      Having the nested checkout operation abort only in some circumstances is
      inconsistent. The current behaviour is clearly a side effect of the
      implementation and not intentional. The code even contradicts itself. The
      function svn_wc__internal_check_wc() contains a comment that says:
      
                /* If a node is not a directory, it is not a working copy
                   directory.  This allows creating new working copies as
                   a path below an existing working copy. */
      
      However, creating a working copy within another doesn't work if the outer
      working copy has outstanding work queue items. The code that checks for
      outstanding work queue items assumes that the caller wants to access the
      enclosing working copy database for the local abspath, while the caller actually
      wants to create a new, unrelated, working copy at the local abspath.
      See this part of svn_wc__db_pdh_create_wcroot():
      
        /* Verify that no work items exists. If they do, then our integrity is
           suspect and, thus, we cannot use this database.  */
        if (format >= SVN_WC__HAS_WORK_QUEUE
            && (enforce_empty_wq || (format < SVN_WC__VERSION && verify_format)))
          {
            svn_error_t *err = verify_no_work(sdb);
      
      The error raised during the nested checkout comes from verify_no_work().
      
      Since 'svn checkout' creates a new working copy, it would make sense to allow
      the checkout to proceed. Else, we should reject nested checkouts outright, and
      not only for some cases.
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              stsp Stefan Sperling
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: