RE: Users cannot reliably view SVN log messages remotely

2010-10-20 Thread Shaun Pinney
I got past the issue and wanted to post my solution here for other SVN
admins/users.  HTH.

 I've got a distant user who cannot reliably view the SVN log messages
 Using TortoiseSVN.  If he 'refreshes', he can view the SVN log messages
 fine.  Also, checkouts work fine.  Other users at his (distant) site
 seem to have the same issue, but I can't reproduce the issue here and
 haven't heard of similar issues from other sites.

From inspecting the Apache logs, I found that the user's client was in an
invalid state.  Somehow it was sending the server requests for revisions
that did not modify any files in the selected directory.  For example, 
Revision 2688 does not exist on Path/To/Directory, but this was in the 
access_log:

REPORT /svn/RepoName/!svn/bc/2688/Path/To/Directory HTTP/1.1 404 247

His TSVN client was also displaying revision 2689 in the Show Log windows.
After asking the user to disable log caching and clear his saved data he
was able to view the log messages again without clicking 'refresh' and the
invalid revision 2689 disappeared from his TSVN window.

 Provider encountered an error while streaming a REPORT response.  [500, #0]
 A failure occurred while driving the update report editor  [500, #103]
 Error writing base64 data: Software caused connection abort  [500, #103]

As for these other error messages, I'm still not sure the reason but there's
no pressing need to investigate at the moment.  If I find a solution later
I'll make sure to post it here for everyone.

Best,
Shaun




Users cannot reliably view SVN log messages remotely

2010-10-18 Thread Shaun Pinney
Hi all,

I've got a distant user who cannot reliably view the SVN log messages
Using TortoiseSVN.  If he 'refreshes', he can view the SVN log messages
fine.  Also, checkouts work fine.  Other users at his (distant) site
seem to have the same issue, but I can't reproduce the issue here and
haven't heard of similar issues from other sites.  We're using Apache,
and I did notice that the Apache logs occasionally shows the below errors
and wonder if there is a known explanation or solution:

Provider encountered an error while streaming a REPORT response.  [500, #0]
A failure occurred while driving the update report editor  [500, #103]
Error writing base64 data: Software caused connection abort  [500, #103]

I've checked the Subversion FAQ, and think the fix there does not apply
since my users are on Windows.  Does anyone know how to resolve these
errors?  I'm suspecting a network issue, so my next thing to try is to
increase the Apache timeout in httpd.conf.  My hunch is that this won't
solve the issue, so if anyone has additional ideas to try I'd really
appreciate it.

Thanks!
Shaun




RE: Users cannot reliably view SVN log messages remotely

2010-10-18 Thread Shaun Pinney
 I've checked the Subversion FAQ, and think the fix there does not apply
 since my users are on Windows.  Does anyone know how to resolve these

(...Sent this out too quickly... I meant to say:)
We're not serving from a MacOS X 10.4 machine, so I don't think the FAQ
applies here.




RE: How to best manage authorization after tag/branch creation?

2010-10-13 Thread Shaun Pinney
 Do you need to restrict READ access to the branch or tag, or do you
 simply want to restrict COMMIT access.

Thanks for the response.  We need both, but restricting read access is
the main concern at the moment.  So far, I only know of AuthUserFile
for controlling read access.

 If you just want to restrict commit access, you can use a pre-commit
 hook to kill a commit transaction if the user who doesn't have
 permission attempts to change a tag or branch.

Good to know.  I'll check into the script you've mentioned.  At the
moment, we've removed read access to /tags for most users.  But this
is not a good long term solution.

 By the way, there's also a way to configure Apache httpd to use LDAP
 instead of a regular text file. This means that users will have access
 to your Subversion repository based upon their Windows or Unix account
 and that users will automatically get logins and have their access
 removed when they get hired or move on.

That's something we'll definitely consider.  We have some other quirks
with account management to sort out first :)

Best,
Shaun




RE: How to best manage authorization after tag/branch creation?

2010-10-13 Thread Shaun Pinney
  Do you need to restrict READ access to the branch or tag, or do you
  simply want to restrict COMMIT access.
 
 Thanks for the response.  We need both, but restricting read access is
 the main concern at the moment.  So far, I only know of AuthUserFile
 for controlling read access.
 
  If you just want to restrict commit access, you can use a pre-commit
  hook to kill a commit transaction if the user who doesn't have
  permission attempts to change a tag or branch.
 
 Good to know.  I'll check into the script you've mentioned.  At the
 moment, we've removed read access to /tags for most users.  But this
 is not a good long term solution.

I should say we've removed both read and write access to /tags for most users.

  By the way, there's also a way to configure Apache httpd to use LDAP
  instead of a regular text file. This means that users will have access
  to your Subversion repository based upon their Windows or Unix account
  and that users will automatically get logins and have their access
  removed when they get hired or move on.
 
 That's something we'll definitely consider.  We have some other quirks
 with account management to sort out first :)
 
 Best,
 Shaun
 





RE: How to best manage authorization after tag/branch creation?

2010-10-13 Thread Shaun Pinney
 The usual issue is making sure people outside the project are
 prevented from reading the code. You might not want people in your
 project making changes on tags and branches, but there usually isn't a
 security issue if they see the code on the branches and tags.

Our issue is handling multiple companies doing development on the same
project.  Various restrictions (e.g. licensing) prevent us from sharing
all project files with everyone involved.  It's a tricky use case.  We
also have additional considerations which require us to control project
read access within a project even within the same company.

 The only way you can prevent people from reading your code is to setup
 httpd configuration. pre-commit hooks can't do this and there's no
 pre-checkout hook.

Yeah, was afraid of that...

 However, changing httpd configuration is tricky since it involves
 having root access on the httpd server and being able to at least
 bounce the server when the permissions get changed.

Yes.  Perhaps if there was a pre-checkout hook it'd be possible to create
a homegrown admin tool.  Or perhaps if Subversion had a feature to natively
manage access control within a repository then no Apache changes would be
needed in the first place.  Either way, some automation would be useful here
but it may not be possible to implement.
 
  By the way, there's also a way to configure Apache httpd to use LDAP
  instead of a regular text file. This means that users will have access
  to your Subversion repository based upon their Windows or Unix account
  and that users will automatically get logins and have their access
  removed when they get hired or move on.
 
  That's something we'll definitely consider.  We have some other quirks
  with account management to sort out first :)
 
 When your development team gets bigger than a dozen people, you start
 having people come and go all the time. That makes it difficult to
 keep the httpd configuration up to date. It just becomes easier if
 this becomes more automated. Or at least someone else's problem when a
 new developer doesn't have access to Subversion.

I completely agree, and will be using that argument to push for it (or
at least the first part :)




RE: How to best manage authorization after tag/branch creation?

2010-10-13 Thread Shaun Pinney
  Our issue is handling multiple companies doing development on the same
  project.  Various restrictions (e.g. licensing) prevent us from sharing
  all project files with everyone involved.  It's a tricky use case.  We
  also have additional considerations which require us to control project
  read access within a project even within the same company.
 
 So, you have a branch for each company, and that's why you need
 specific read permissions on each branch? If that's the case, I can
 see why you want to restrict reading privileges on a per-branch basis.
 How do you handle branching and tags in that case? Do you branch
 branches and tags off the company branches?

We're rolling like this at the moment.  We have a top-level 'main' project
folder which is for us only.  We use path-based authorization to restrict
access here for our users.  We've also added another top-level folder 'product'
which is a subset copy of 'main.'  Every company involved in the product does
development in 'product/trunk'.  We use path-based authorization to remove
read access from the trunk before development work begins.  As tags or branches
are created for the product, and as new top-level product directories are
created
we'll need to add a pre-commit hook to remind people to edit httpd.conf for
path-
based authorization.

We've considered removing the restricted source code From the product folder,
but the reason for leaving it is because product-specific changes to the
restricted code are needed.  I'd love to hear any ideas or improvements.
Thanks!




RE: How to best manage authorization after tag/branch creation?

2010-10-13 Thread Shaun Pinney
  When your development team gets  bigger than a dozen people, you start
   having people come and go all the  time. That makes it difficult to
   keep the httpd configuration up to  date. It just becomes easier if
   this becomes more automated. Or at least  someone else's problem when a
   new developer doesn't have access to  Subversion.
 
  I completely agree, and will be using that argument to push  for it (or
  at least the first part :)
 
 And that's why you use LDAP or another alternative authentication method.
 BTW, Subversion does support groups as part of the path-based
 authentication.
 I don't know how that interacts with LDAP if at all, but that might be
 something
 to investigate or perhaps add support for.

Thanks Ben.  That's good to know.

Best,
Shaun





RE: How to best manage authorization after tag/branch creation?

2010-10-13 Thread Shaun Pinney
 If you need to control access to the code you can do things such as:
 - only allow the developers that need access access to the whole project

Yep, we do this.  There are still some restricted areas in some projects
though.

 - setup a secondary tags namespace for special binary only information
 - have the build mechanism push the binaries to a special binary tag by the
 same
 name
 - use svn:externals to reference the binary releases instead of source
 releases.

Yes, I think binary releases of restricted modules is a very good idea.  It's
a slow process, but I think pushing for this will help a lot.  There's a
perception that binary releases of restricted source code is not necessary
if product-specific changes are needed to the code.  Just copy the source
code to the product folder and restrict it in httpd.conf.  I'm working on
this...  Also, while we don't use svn:externals currently, it looks like
it would be useful for handling binary releases of restricted code.  Thanks
for that!




RE: How to best manage authorization after tag/branch creation?

2010-10-13 Thread Shaun Pinney
  If you need to control access to the code you can do things such as:
  - only allow the developers that need access access to the whole project
 
 Yep, we do this.  There are still some restricted areas in some projects
 though.
 
  - setup a secondary tags namespace for special binary only information
  - have the build mechanism push the binaries to a special binary tag by
 the
  same
  name
  - use svn:externals to reference the binary releases instead of source
  releases.
 
 Yes, I think binary releases of restricted modules is a very good idea.
 It's
 a slow process, but I think pushing for this will help a lot.  There's a
 perception that binary releases of restricted source code is not necessary
 if product-specific changes are needed to the code.  Just copy the source
 code to the product folder and restrict it in httpd.conf.  I'm working on
 this...  Also, while we don't use svn:externals currently, it looks like
 it would be useful for handling binary releases of restricted code.  Thanks
 for that!

Let me try to say that a bit better.  Binaries are always created for the
restricted source code.  The need to include the restricted source code in
the product directory is debatable.  Treating the restricted source code as
a full-fledged project with it's own top-level directory would help.  If a
product-specific change is needed to the restricted code, create a branch
under it's directory, store the binary during release, and reference the
binary in the product folder with svn:externals.  That's a bit more clear,
I think.




How to best manage authorization after tag/branch creation?

2010-10-12 Thread Shaun Pinney
Hello all,

We've configured Apache to restrict access to certain directories on our trunk
(n.b. via AuthUserFile in httpd.conf).  The problem is now I've created a tag
from our trunk and found that the permissions don't 'automatically' transfer
during creation of the tag.  Obviously, this is because the AuthUserFile is a
text file and needs to be edited manually :).  But, is there an admin tool to
help with this basic task to avoid accidentally providing full access to a tag
(or branch)?  Hopefully, Subversion provides some type of 'smart branch/tag
creation' which can inherit permissions from the source directory.  Please let
me know of the best way to do this.

Thanks,
Shaun




How to determine high-level SVN actions from low-level Apache logs?

2010-10-07 Thread Shaun Pinney
Hello all,

I'd like to inspect the Apache log files (e.g. access_log) to determine SVN
activities such as commit, update, svnsync, etc.  How can I do this?

Thanks,
Shaun



RE: How to determine high-level SVN actions from low-level Apache logs?

2010-10-07 Thread Shaun Pinney
Hi Mark,

Thanks for the info - I'll try to get this option added to our server.  Right
now, all I have is access_log.  Is there a way to get the same info from
access_log?

Regards,
Shaun

 -Original Message-
 From: Mark Phippard [mailto:markp...@gmail.com]
 Sent: Thursday, October 07, 2010 1:53 PM
 To: Shaun Pinney
 Cc: users@subversion.apache.org
 Subject: Re: How to determine high-level SVN actions from low-level Apache
 logs?
 
 On Thu, Oct 7, 2010 at 4:46 PM, Shaun Pinney
 shaun.pin...@bil.konicaminolta.us wrote:
 
  I'd like to inspect the Apache log files (e.g. access_log) to determine
 SVN
  activities such as commit, update, svnsync, etc.  How can I do this?
 
 The best way to do this is to configure Subversion's high-level
 operational logging.  If you use CollabNet Subversion Edge for your
 server it configures Apache to record these logs automatically and you
 can access them via a web UI.  It also offers daily log rotation and
 automated log cleanup  See:
 http://www.open.collab.net/products/subversion/whatsnew.html
 
 If you want to configure this feature for your own server it is
 documented in the book:
 
 http://svnbook.red-
 bean.com/nightly/en/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extr
 a.logging
 
 --
 Thanks
 
 Mark Phippard
 http://markphip.blogspot.com/



RE: How to determine high-level SVN actions from low-level Apache logs?

2010-10-07 Thread Shaun Pinney
 -Original Message-
 From: Mark Phippard [mailto:markp...@gmail.com]
 Sent: Thursday, October 07, 2010 1:53 PM
 
 On Thu, Oct 7, 2010 at 4:46 PM, Shaun Pinney
 shaun.pin...@bil.konicaminolta.us wrote:
 
  I'd like to inspect the Apache log files (e.g. access_log) to determine
 SVN
  activities such as commit, update, svnsync, etc.  How can I do this?
 
 The best way to do this is to configure Subversion's high-level
 operational logging.  If you use CollabNet Subversion Edge for your
 server it configures Apache to record these logs automatically and you
 can access them via a web UI.  It also offers daily log rotation and
 automated log cleanup  See:
 http://www.open.collab.net/products/subversion/whatsnew.html
 
 If you want to configure this feature for your own server it is
 documented in the book:
 
 http://svnbook.red-
 bean.com/nightly/en/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extr
 a.logging

(sorry for the earlier top post...)

Hi Mark,

Thanks for the info - I'll try to get this option added to our server.  Right
now, all I have is access_log.  Is there a way to get the same info from
access_log?

Regards,
Shaun