On Thu, Mar 3, 2011 at 3:34 AM, Noorul Islam K M <noo...@collab.net> wrote:

>
> Please find attached patch for issue 3826. All tests pass using 'make
> check'
>

Hey Noorul,

I had a quick look at this issue last night. It appears a similar issue
exists for almost every command (I checked 'info', 'status' and 'update').

Cheers,
Daniel B.


> Log
> [[[
>
> Fix for issue 3826. Make svn diff respect absolute paths. Also fix
> corresponding test.
>
> * subversion/svn/diff-cmd.c
>  (svn_cl__diff): Do not convert absolute path into relative one.
>
> * subversion/tests/cmdline/diff_tests.py
>  (diff_abs_localpath_from_wc_folder): Fix test to use correct absolute
>    path. Remove XFail marker.
>
> Patch by: Noorul Islam K M <noorul{_AT_}collab.net>
> Found by: danielsh
> ]]]
>
>
> Index: subversion/tests/cmdline/diff_tests.py
> ===================================================================
> --- subversion/tests/cmdline/diff_tests.py      (revision 1076214)
> +++ subversion/tests/cmdline/diff_tests.py      (working copy)
> @@ -3761,7 +3761,6 @@
>                                      '-c2', '--git')
>   os.chdir(was_cwd)
>
> -@XFail()
>  @Issue(3826)
>  def diff_abs_localpath_from_wc_folder(sbox):
>   "diff absolute localpath from wc folder"
> @@ -3770,9 +3769,10 @@
>
>   A_path = os.path.join(wc_dir, 'A')
>   B_path = os.path.join(wc_dir, 'A', 'B')
> +  B_abspath = os.path.abspath(B_path)
>   os.chdir(os.path.abspath(A_path))
>   svntest.actions.run_and_verify_svn(None, None, [], 'diff',
> -                                     os.path.abspath(B_path))
> +                                     B_abspath)
>
>  ########################################################################
>  #Run the tests
> Index: subversion/svn/diff-cmd.c
> ===================================================================
> --- subversion/svn/diff-cmd.c   (revision 1076214)
> +++ subversion/svn/diff-cmd.c   (working copy)
> @@ -324,8 +324,11 @@
>             return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
>                                      _("Path '%s' not relative to base
> URLs"),
>                                      path);
> +          if (! svn_dirent_is_absolute(path))
> +            path = svn_relpath_canonicalize(path, iterpool);
> +          else
> +            path = svn_dirent_canonicalize(path, iterpool);
>
> -          path = svn_relpath_canonicalize(path, iterpool);
>           if (svn_path_is_url(old_target))
>             target1 = svn_path_url_add_component2(old_target, path,
> iterpool);
>           else
>
>

Reply via email to