You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@allura.apache.org by 王再國 <wa...@gmail.com> on 2013/05/03 07:51:18 UTC

Re: Subversion server setting on apache & mod_dav_svn

Yes, I had use the patch file to patch subversion 1.7.7 and follow INSTALL
document to conf; compile; make.
But some step is difficult for me.
like below.
1. No BDB support. only FSFS. because berkeley-db can not found. set
--with-berkeley-db same is not found.
2. How to depoly to another server?

My question is "This patch file will patch to subversion release version?
or not?".

wangaguo


2013/4/27 Dave Brondsema <da...@brondsema.net>

> I'm pretty sure this patch is for subversion 1.7.7
>
> On 4/25/13 1:46 AM, 王再國 wrote:
> > hi dave:
> > Thank you very mush.
> > I can't find the source code. Can you help me.
> > The pastebin only show the branch master? Pastebin data look is not same
> with
> > branch master.
> >
> > wangaguo.
> >
> >
> >
> > 2013/4/22 Dave Brondsema <dave@brondsema.net <mailto:dave@brondsema.net
> >>
> >
> >     Here's the latest version of the patch
> >     https://sourceforge.net/p/allura/pastebin/517557273e5e837ec65122c1/
> >
> >
> >     diff -rup subversion-1.7.7.orig/subversion/libsvn_repos/repos.c
> >     subversion-1.7.7/subversion/libsvn_repos/repos.c
> >     --- subversion-1.7.7.orig/subversion/libsvn_repos/repos.c
> 2012-11-15
> >     16:04:07.000000000 +0000
> >     +++ subversion-1.7.7/subversion/libsvn_repos/repos.c    2012-12-07
> >     23:06:10.352959642 +0000
> >     @@ -1286,7 +1286,7 @@ svn_repos_create(svn_repos_t **repos_p,
> >       * on errors (which would be permission errors, probably) so that
> >       * we the user will see them after we try to open the repository
> >       * for real.  */
> >     -static svn_boolean_t
> >     +svn_boolean_t
> >      check_repos_path(const char *path,
> >                       apr_pool_t *pool)
> >      {
> >     diff -rup subversion-1.7.7.orig/subversion/mod_dav_svn/repos.c
> >     subversion-1.7.7/subversion/mod_dav_svn/repos.c
> >     --- subversion-1.7.7.orig/subversion/mod_dav_svn/repos.c
>  2012-11-15
> >     16:04:07.000000000 +0000
> >     +++ subversion-1.7.7/subversion/mod_dav_svn/repos.c     2012-12-07
> >     23:06:18.291130038 +0000
> >     @@ -1288,10 +1288,13 @@ dav_svn_split_uri(request_rec *r,
> >
> >        else
> >          {
> >     -      /* SVNParentPath was used instead: assume the first component
> of
> >     +      /* SVNParentPath was used instead: figure out which component
> of
> >               'relative' is the name of a repository. */
> >     -      const char *magic_component, *magic_end;
> >     +      extern svn_boolean_t check_repos_path(const char *path,
> apr_pool_t
> >     *pool);
> >     +      const char *magic_component = NULL, *magic_end;
> >     +      char *repos_path;
> >
> >     +     do {
> >            /* A repository name is required here.
> >               Remember that 'relative' always starts with a "/". */
> >            if (relative[1] == '\0')
> >     @@ -1309,16 +1312,34 @@ dav_svn_split_uri(request_rec *r,
> >                /* ### Request was for parent directory with no trailing
> >                   slash; we probably ought to just redirect to same with
> >                   trailing slash appended. */
> >     +         if (!magic_component)
> >                magic_component = relative + 1;
> >     +         else {
> >     +          magic_component = apr_pstrcat(r->pool, magic_component,
> >     +                                        relative, NULL);
> >     +         }
> >                relative = "/";
> >              }
> >            else
> >              {
> >     +         if (!magic_component)
> >                magic_component = apr_pstrndup(r->pool, relative + 1,
> >                                               magic_end - relative - 1);
> >     +         else {
> >     +          char *tmp_magic_component;
> >     +
> >     +          tmp_magic_component = apr_pstrndup(r->pool, relative,
> >     +                                             magic_end - relative);
> >     +          magic_component = apr_pstrcat(r->pool, magic_component,
> >     +                                        tmp_magic_component, NULL);
> >     +         }
> >                relative = magic_end;
> >              }
> >
> >     +      repos_path = svn_path_join(fs_parent_path, magic_component,
> >     +                                 r->pool);
> >     +     } while (check_repos_path(repos_path, r->pool) != TRUE);
> >     +
> >            /* return answer */
> >            *repos_basename = magic_component;
> >          }
> >     @@ -1472,6 +1493,7 @@ cleanup_fs_access(void *data)
> >      }
> >
> >
> >     +#if 0
> >      /* Helper func to construct a special 'parentpath' private
> resource. */
> >      static dav_error *
> >      get_parentpath_resource(request_rec *r,
> >     @@ -1527,6 +1549,7 @@ get_parentpath_resource(request_rec *r,
> >        *resource = &comb->res;
> >        return NULL;
> >      }
> >     +#endif
> >
> >      /* --------------- Borrowed from httpd's mod_negotiation.c
> -------------- */
> >
> >     @@ -1955,6 +1978,7 @@ get_resource(request_rec *r,
> >        xslt_uri = dav_svn__get_xslt_uri(r);
> >        fs_parent_path = dav_svn__get_fs_parent_path(r);
> >
> >     +#if 0
> >        /* Special case: detect and build the SVNParentPath as a unique
> type
> >           of private resource, iff the SVNListParentPath directive is
> 'on'. */
> >        if (fs_parent_path && dav_svn__get_list_parentpath_flag(r))
> >     @@ -1978,6 +2002,7 @@ get_resource(request_rec *r,
> >                return NULL;
> >              }
> >          }
> >     +#endif
> >
> >        /* This does all the work of interpreting/splitting the request
> uri. */
> >        err = dav_svn_split_uri(r, r->uri, root_path,
> >     @@ -3264,8 +3289,13 @@ deliver(const dav_resource *resource, ap
> >              {
> >                apr_hash_index_t *hi;
> >                apr_hash_t *dirents;
> >     +          int root_path_len =
> strlen(resource->info->repos->root_path);
> >                const char *fs_parent_path =
> >     -            dav_svn__get_fs_parent_path(resource->info->r);
> >     +            apr_pstrcat(resource->info->r->pool,
> >     +
>  dav_svn__get_fs_parent_path(resource->info->r),
> >     +                        resource->info->r->uri
> >     +                        + ((root_path_len > 1) ? root_path_len : 0),
> >     +                        NULL);
> >
> >                serr = svn_io_get_dirents3(&dirents, fs_parent_path, TRUE,
> >                                           resource->pool,
> resource->pool);
> >
> >
> >
> >
> >
> >
> >
> >     On 4/17/13 4:41 PM, Dave Brondsema wrote:
> >     > On SourceForge our SVN servers run with a patch to SVNParentPath
> to support
> >     > recursion.
> http://subversion.tigris.org/issues/show_bug.cgi?id=3588 has some
> >     > patches for it, but they are old.  I'm seeing if I can get the
> latest
> >     version of
> >     > our patch public that works with a recent release of Subversion.
> >     >
> >     > On 4/17/13 5:02 AM, 王再國 wrote:
> >     >> I think so. "inotifywait, or a simple cron job would probably be
> easier."
> >     >>
> >     >> project has subproject. recursively sub project.
> >     >> allura neighborhood can invite project to other neighborhood.
> >     >> This will change all relation path.
> >     >> I don't know sourceforge how to setting svn server.
> >     >> but I know have many event handler or script.
> >     >>
> >     >> now, I use apache macro module.
> >     >>
> >     >> <Macro SVNSetup $nh_project>
> >     >>  <location $nh_project>
> >     >>    DAV svn
> >     >>    SVNParentPath /scm/svn$nh_project
> >     >>      ...
> >     >>  </location>
> >     >> </Macro>
> >     >>
> >     >> NameVirtualHost 192.168.22.121
> >     >> <VirtualHost svn.allura.org <http://svn.allura.org> <
> http://svn.allura.org>>
> >     >>  Use SVNSetup /p/allura
> >     >>  Use SVNSetup /p/test
> >     >>  Use SVNSetup /p/test/sub1
> >     >> </VirtualHost>
> >     >>
> >     >> and I need to sync the conf with allura neighborhood; project;
> subproject.
> >     >> sourceforge how to setting svn server???
> >     >>
> >     >> wangaguo
> >     >>
> >     >>
> >     >> 2013/4/17 王再國 <wangaguo@gmail.com <ma...@gmail.com>
> >     <mailto:wangaguo@gmail.com <ma...@gmail.com>>>
> >     >>
> >     >>     if project & repos below.
> >     >>     /p/allura/svn
> >     >>     /p/testproject01/svn
> >     >>     /p/testproject02/svn
> >     >>
> >     >>     and /tmp/svn/ is SVNParentPath
> >     >>
> >     >>     maybe symlink below.
> >     >>     /tmp/svn/allura-svn
> >     >>     /tmp/svn/testproject01-svn
> >     >>     /tmp/svn/testproject02-svn
> >     >>
> >     >>     but the web url is not below.
> >     >>     http://svn.allura.org/p/allura/svn
> >     >>     http://svn.allura.org/p/testproject01/svn
> >     >>
> >     >>     web url is below.
> >     >>     http://svn.allura.org/allura-svn
> >     >>     http://svn.allura.org/testproject01-svn
> >     >>
> >     >>     wangaguo
> >     >>
> >     >>
> >     >>
> >     >>     2013/4/16 Tim Van Steenburgh <tvansteenburgh@gmail.com
> >     <ma...@gmail.com>
> >     >>     <mailto:tvansteenburgh@gmail.com <mailto:
> tvansteenburgh@gmail.com>>>
> >     >>
> >     >>         One idea would be to use bash + inotifywait to watch
> /tmp/svn, and
> >     >>         rename + symlink new repo directories to another
> location, and
> >     use that
> >     >>         location as the SVNParentPath. I'm not totally sure it
> would
> >     work, but
> >     >>         maybe worth a try?
> >     >>
> >     >>         Tim
> >     >>
> >     >>         On Tuesday, April 16, 2013 at 2:58 AM, 王再國 wrote:
> >     >>
> >     >>>         If all repos in the /tmp/svn then set SVNParentPath on
> /tmp/svn
> >     is ok.
> >     >>>         But allura has three level neighborhood; project; repos.
> >     >>>         SVNParentPath only support one level parent path. no
> recursive.
> >     >>>         e.g. /p/allura/svn1, In apache conf, I only can seting
> to the allura
> >     >>>         project.
> >     >>>
> >     >>>         wangaguo
> >     >>>
> >     >>>
> >     >>>         2013/4/16 王再國 <wangaguo@gmail.com <mailto:
> wangaguo@gmail.com>
> >     <mailto:wangaguo@gmail.com <ma...@gmail.com>>>
> >     >>>
> >     >>>             Hi.
> >     >>>             svn can set SVNParentPath for multiple repository.
> >     >>>             But allura scm direcotry stucture is
> neighborhood/project/repos.
> >     >>>             How to setting up svn apache & mod_dav_svn for
> allura svn
> >     folder.
> >     >>>
> >     >>>             wangaguo
> >     >>>
> >     >>>
> >     >>>
> >     >>
> >     >>
> >     >>
> >     >
> >     >
> >     >
> >
> >
> >
> >     --
> >     Dave Brondsema : dave@brondsema.net <ma...@brondsema.net>
> >     http://www.brondsema.net : personal
> >     http://www.splike.com : programming
> >                   <><
> >
> >
>
>
>
> --
> Dave Brondsema : dave@brondsema.net
> http://www.brondsema.net : personal
> http://www.splike.com : programming
>               <><
>