Re: UNS: Re: svnmucc

2013-11-18 Thread Blair Zajac

On Nov 18, 2013, at 7:33 AM, Andreas Krey a.k...@gmx.de wrote:

 On Mon, 18 Nov 2013 07:11:40 +, Nico Kadel-Garcia wrote:
 Brother, unweaving the quotes is its own problem. You see, most
 filesystems allow single quotes and double quotes in the filenames
 themselves. Hilarity will ensue.
 
 Quoting is a solved problem, including quoting quotes.
 
 Using newlines a command argument separator because there may be spaces
 in files names is a regression from accepted CLI design, and doesn't
 even solve the problem of newlines in file name which filesystems also
 allow. Besides, hilarity also ensues there when a file happens to be named
 'rm’.

svnmucc handles arbitrary long command line arguments with spaces if they are 
quoted.  This is in regards to the -X command line option.

Blair



Re: svnmucc

2013-11-16 Thread Blair Zajac

On 11/16/2013 03:06 AM, Andreas Mohr wrote:

On Sat, Nov 16, 2013 at 04:29:13AM -0500, Geoff Rowell wrote:



On Nov 16, 2013, at 2:10 AM, Vladislav Javadov vapaam...@yandex.ru wrote:

rm programs/develop/fasm/tags
rm programs/games/mine/tags
rm programs/games/snake/tags


Each command argument must be on a separate line:

rm
programs/develop/fasm/tags
rm
programs/games/mine/tags
rm
programs/games/snake/tags


So, does that mean that svnmucc has single-arg support only?
Cause given this example, on the syntax side there's nothing
that would indicate that a new command is following,
rather than further options to the existing command...
(unless rm is one of the commands
which are specially recognized as a known-supported command)

Sorry for my critique (and thank you for your help!) - just sayin'...


Not having looked at the source code, it probably just reads from the 
file until it reaches the end.


The reason to support this syntax with command and arg on separate lines 
is to support files with whitespaces in the names, which wouldn't be 
possible wit the syntax of command and arg on a single line.


Blair



Re: What FSFS stands for?

2013-10-31 Thread Blair Zajac

On 10/31/2013 08:36 AM, Pavel Lyalyakin wrote:

Hello,

I see interesting question on StackOverflow:
http://stackoverflow.com/q/19687614/761095

[[
I have scoured the internet looking for a clear answer and cannot find
one. What does it stand for? I am currently trying to set up a new
repo for our development team and I would like to know what this term
means.
]]

The only answer there states that FSFS stands for File System in
File System. Is this correct?
Can't find anything on the web or mailing lists on this matter.


That's about right:

filesystem atop of the filesystem [1]
a Filesystem implementation that uses the OS filesystem to store data. [2]

[1] http://en.wikipedia.org/wiki/Apache_Subversion#FSFS
[2] http://subversion.apache.org/docs/release-notes/1.1.html

Blair



Re: Question regarding @ symbol

2013-01-08 Thread Blair Zajac

On 01/08/2013 12:11 PM, Leonard Wayne wrote:

Hello.

I read the Subversion documentation (in
particular the Peg and Operative Revisions
section) for how to handle versioning of
directories with names that contain the @
symbol.  But I am still confused by something.

I want to use the import command to import a
tree that includes subdirectories with names
that contain the @ symbol.  For example I
would like to do the following (using the
Windows syntax):

svn import c:\myPath\myDirTree file:///c:/svn/repo/myProject -m Initial 
import.


This will work.  The only issue with @ is when it appears in a command 
line.  Anytime you reference one of the directories with a @ in its 
name, then you'll need to append a @ at the end.



The directory tree myDirTree contains
subdirectories with names that contain the @
symbol.

The command executes without reporting any
problems.

But is it OK to use this command?  Or instead
of using the import command should I instead
do a bunch of add commands and use the
workaround discussed in the Peg and Operative
Revisions section of the manual (append @
at the end of the path)?


No, just use import.

BTW, I don't like import for a different reason is that there's no 
forgiveness for errors, say if you've left a file in the directory you 
don't want to import.  I like to do a recursive add instead for that reason.


Regards,
Blair




Re: New to subversion, need to find documentation on writing hooks

2012-05-21 Thread Blair Zajac

On 05/21/2012 03:11 PM, Les Mikesell wrote:

On Mon, May 21, 2012 at 4:56 PM, David Weintraubqazw...@gmail.com  wrote:


Jenkins is pretty simple on the surface to setup. Simply download the
Jenkins war file, install a Java JDK if you don't have one
installed, and run the following command:

$ java -jar jenkins.war


Since he mentioned ubuntu earlier, it is probably even easier to go
with the packaged version:
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu
after which the system will know how to pick up updates.


Do you mean apt-get updates or Jenkin's self-provided update mechanism? 
 If the later, is that recommended when it is installed via apt-get? 
I've always installed Jenkins by hand.


Blair




Re: Info about SVN

2012-04-17 Thread Blair Zajac

On 04/17/2012 02:13 PM, Chris Albertson wrote:

Other free software you might want to try is CVS and GIT.
http://git-scm.com/
http://www.nongnu.org/cvs/


Really, recommending to try CVS???  That's a step backwards ;)

Blair


Re: SVN commit behaviour not consistent with other commands (such as delete or add)

2012-02-22 Thread Blair Zajac

On 02/22/2012 02:20 PM, Konstantin Kolinko wrote:

2012/2/23 Evan Weeev...@nationalfibre.net:


Strangely, other commands with * used will work, such as svn delete, svn
add, etc. Even svn commit * will work somewhat as it commits the modified
and added files, but not the deleted ones.

I had a discussion with others and their explanation is that the character *
refers to valid targets and thus deleted items are not targettable, hence
their being missed in the commit. Should this be a valid exception case for
svn commit so as to make it consistent with other svn commands?



The '*' filename pattern on Unixes is processed by the Shell before
the command is passed to Subversion. It matches only existing files.
Subversion cannot do anything with it.

Officially - see
http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
Shell Command Language
-  2.6.6 Pathname Expansion


And even if this could be changed, you should just get in the practice 
of using . as a target instead, as if you do a merge and then 'svn 
commit *', you won't pick up the property change on the current working 
directory.  In other words, you would have committed everything but the 
metadata to record the merge.


Blair




Re: SVN backup with lvm snapshots and rsync

2012-02-19 Thread Blair Zajac

On 02/15/2012 11:05 AM, Philip Martin wrote:

Stefan Sperlings...@elego.de  writes:


But rather than going through that effort, I would recommend using
svnadmin dump/load, or svnsync with file:// URLs, until Subversion 1.8
is released. At which point you can switch over to using
svnadmin hotcopy --incremental, which will copy rep-cache.db via
the appropriate sqlite APIs.


Are you suggesting this because you know the LVM snapshot method doesn't
work or just because it's a method that avoids non-standard Subversion
tools?

Running rsync on an LVM snapshot looks like it should work to me.  An
LVM snapshot freezes the filesystem by diverting all writes into the
snapshot area.  A Subversion repository in the frozen filesystem may
have transactions in progress, Subversion transactions or SQLite
transactions, but they won't change while the copy is made.  If the
copied repository is ever used then these partial transactions will
simply be ignored.  Provided Subversion gets its fsyncs and writes in
the correct order, and I believe it does, this looks like it should
work.  I'd go as far as saying if the copied repository doesn't work
then this is a Subversion bug, or perhaps an LVM/OS bug.


One needs to use at least 1.6.5, there is one fsync I added to ensure 
that fsfs works without causing empty revprop files.  This was seen on a 
GPFS filesystem [1].


Blair

[1] http://subversion.tigris.org/issues/show_bug.cgi?id=3442


Re: multiple svn front-ends, single SAN repo volume

2012-02-11 Thread Blair Zajac

On 2/10/2012 10:21 AM, Bruce Lysik wrote:

Hi,

I'm considering deploying 3 front-ends, all mounting the same SAN volume
for repo. (The SAN handle flock() and fnctl() correctly.) These 3 FEs
would be load balanced by a Citrix Netscaler. (At least for http(s).)


The largest issues I've run into using a shared storage is not the 
flock() and fcntl() but the atomic renames.  fsfs will atomically rename 
three files to do a commit and the last rename of the 'current' file, on 
some shared filesystems, will result in points of time where the systems 
not doing a commit will not see a 'current' file.  If this happens, then 
any svn read or write operation on the repository will temporarily fail.


We had GPFS and it never failed to implement the posix requirements, but 
it was slow for the number of commits we were pushing (6/sec), so we 
ended up going to a single server solution with a standby.  There was 
another filesystem, I forgot its name, which didn't implement atomic 
renames correctly and wasn't usable for svn.


Have you tested your SAN deployment?

What I would do is create a fsfs repository and on one of your hosts, do 
as many commits per second as you can in a tight loop, then have another 
host in a tight loop do an operation on the repository, like get the log 
message of the HEAD revision.


If you want to test your flock() and fcntl() and see how well that 
performs, try to do as many commits per second into the same repo from 
two or more hosts.  In this case, have a repository with N directories 
and have each host modify a file in a single directory, that way you 
won't get any conflicts.


How many commits per second are you expecting in practice?

Blair

--
Blair Zajac, Ph.D.
CTO, OrcaWare Technologies
bl...@orcaware.com
Subversion training, consulting and support
http://www.orcaware.com/svn/



Re: Difference between 'svn update' and 'svn checkout'

2011-11-11 Thread Blair Zajac

On 11/11/2011 06:41 PM, Andy Levy wrote:

On Fri, Nov 11, 2011 at 21:12, Welington Rodrigues Braga
welrbr...@welrbraga.eti.br  wrote:

Hi guys,

I've just started to use Subversion a few months ago and I am really
are asking me why I had never used it before but it is not the reason
of my contact. To be honest I am trying to to do a post-commit script
that automatically sincronizes a given workcopy when any of my users
commits their modifications to my repository.

Although it's is ok and working fine (at least in my simples test), I
did not put in production yet because I have a doubt that neither
Subversion manual or Google were able to answer me. I didn't find any
difference beetwen 'svn update' and 'svn checkout' commands which is
the main function of my post-commit script.

Nowadays I'm using 'svn checkout' and it is working, like I said, but
I'm not sure if I'm losing some functionality with this option.

Can anyone help me and answer my question?


svn checkout creates a new working copy.

svn update updates an existing working copy.


As Andy said, but there is some special behavior in checkout.  If you 
run svn checkout on top of an existing working copy it'll work if the 
URL is the same as the working copy URLs, but otherwise fail, so this 
may explain the behavior you see.  But if you did


svn co $URL1 dir
svn co $URL2 dir

the second one would fail.

It's best to do something like this

if test -d dir; then
  svn up dir
else
  svn co $URL dir
fi


Re: Difference between 'svn update' and 'svn checkout'

2011-11-11 Thread Blair Zajac

On Nov 11, 2011, at 7:17 PM, Welington Rodrigues Braga wrote:

 2011/11/12 Blair Zajac bl...@orcaware.com:
 On 11/11/2011 06:41 PM, Andy Levy wrote:
 
 On Fri, Nov 11, 2011 at 21:12, Welington Rodrigues Braga
 welrbr...@welrbraga.eti.br  wrote:
 
 Hi guys,
 
 I've just started to use Subversion a few months ago and I am really
 are asking me why I had never used it before but it is not the reason
 of my contact. To be honest I am trying to to do a post-commit script
 that automatically sincronizes a given workcopy when any of my users
 commits their modifications to my repository.
 
 Although it's is ok and working fine (at least in my simples test), I
 did not put in production yet because I have a doubt that neither
 Subversion manual or Google were able to answer me. I didn't find any
 difference beetwen 'svn update' and 'svn checkout' commands which is
 the main function of my post-commit script.
 
 Nowadays I'm using 'svn checkout' and it is working, like I said, but
 I'm not sure if I'm losing some functionality with this option.
 
 Can anyone help me and answer my question?
 
 svn checkout creates a new working copy.
 
 svn update updates an existing working copy.
 
 As Andy said, but there is some special behavior in checkout.  If you run
 svn checkout on top of an existing working copy it'll work if the URL is the
 same as the working copy URLs, but otherwise fail, so this may explain the
 behavior you see.  But if you did
 
 svn co $URL1 dir
 svn co $URL2 dir
 
 the second one would fail.
 
 It's best to do something like this
 
 if test -d dir; then
  svn up dir
 else
  svn co $URL dir
 fi
 
 
 
 Thanks Andy and Blair. I've already understood this part explained on
 manual so my doubt is considering that a working copy was created and
 populated before, it will only receive changes (never it will send or
 commit them) and aI will not modify he URL.
 
 Considering those points. Will the behavious of both be the same or
 there are any risk of happen something wrong?

Yes, generally, there is no subcommand in the Subversion command line client 
that pulls and pushes data to the Subversion server, all commands are one way 
for updates, the either update the data in the working copy or the data in the 
repository.  So you have nothing to worry about inadvertently pushing data to 
the repository with a update or checkout.

Regards,
Blair



Re: Problems compiling 1.7.0 on redhat el4 64bit

2011-08-11 Thread Blair Zajac

On Aug 11, 2011, at 8:32 AM, michael_rytt...@agilent.com 
michael_rytt...@agilent.com wrote:

 No luck with that option, still crashing.

Try running the process under valgrind to see if it finds anything.

Blair



Re: Generating SVN libraries from source on Mac OSX

2011-05-20 Thread Blair Zajac

On May 20, 2011, at 3:40 AM, Ian Sidor wrote:

 Oops. Thank-you for pointing that out, my mistake.
 
 However, I still cannot find any libsvn*.a files anywhere on the drive.
 
 As described in my first mail, there is a file I can see with the extension 
 'LA' which is a text file. It states that the libraries will be built to 
 /usr/local/lib but they don't seem to be there after I execute make.

You have to run make install to get them to install into /usr/local/lib.

BTW, if you're building libraries for your application, it's probably best to 
pick a different directory than /usr/local, since it's a common dumping ground. 
 Choose something like /opt/my_company_name/product_name.

Also, you could build with MacPorts into /opt/my_company_name/product_name and 
then have it provide all the .a's.

Blair



Re: Generating SVN libraries from source on Mac OSX

2011-05-19 Thread Blair Zajac
Static libraries end in .a, not .dylib, those are shared.

Blair

On May 19, 2011, at 9:23 AM, Ian Sidor wrote:

 I tried --disable-shared but I still didn't get any libsvn*.dylib files.
 
 Is there anything else I can try?
 
 
 On 19 May 2011, at 07:47, Daniel Shahaf wrote:
 
 Just ignore the file you don't need then?
 
 Or try --disable-shared
 
 Ian Sidor wrote on Thu, May 19, 2011 at 00:00:45 +0100:
 I'm building Subversion from source in order to generate static libraries 
 to use in my own application.
 
 I can build Subversion fine but I don't seem to be getting any libraries 
 (dylib's).
 
 Here is what I type in terminal:
 
 curl -O http://subversion.tigris.org/downloads/subversion-1.6.16.tar.gz
 curl -O http://subversion.tigris.org/downloads/subversion-deps-1.6.16.tar.gz
 
 tar xzvf subversion-1.6.16.tar.gz
 tar xzvf subversion-deps-1.6.16.tar.gz
 
 ./configure --enable-static
 make
 
 
 I found a file 'libsvn_client-1.la' which is required for linking. The text 
 inside describes 'libsvn_client-1.dylib' but it is never generated after 
 make is executed.
 
 I've tried everything I can think of  no doubt missing something simple, 
 I'm not too familiar with Unix open source conventions. Can someone help me 
 with this please?
 
 Thank-you.
 Ian.
 



Re: repo on Windows -- why not?

2011-04-28 Thread Blair Zajac

On 4/28/11 9:42 AM, Danil Shopyrin wrote:

are there any arguments to prefer Windows? (beside arguments that you drive
a Windows shop)
ok, looks like I have to adjust the section a bit.


It's also very important to integrate Subversion seamlessly with
Active Directory and other existing Windows infrastructure (it applies
to Windows shops, of course).


Just to add a bit to this, if one has Active Directory but uses Unix servers, 
one doesn't have to deploy on Windows to authenticate, can use LDAP in httpd to 
authenticate against AD.


Blair



Re: ^M Appends to every line?

2011-02-26 Thread Blair Zajac

On 2/24/2011 8:02 AM, Christopher D Haakinson wrote:

OK, so I've been testing out the svn:eol-style prop and it appears to
work, but it seems like an awful lot of work for such a simple issue.

Is there something server-side I can setup to ensure that all files
contain the correct eol style?


As others have said, you can use a pre-commit script to check the files.

If you have a number of files already checked in that you want to update 
their properties, you can use the svn_apply_autoprops.py script that I 
wrote a while back on a working copy to fix up everything in one commit:


http://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svn_apply_autoprops.py

Regards,
Blair


Re: svn update or rsync - which is best to update live files

2011-02-25 Thread Blair Zajac

On 2/25/11 11:39 AM, Christopher D Haakinson wrote:

Hi, I have subversion up and running quite well now(thanks to everyone here :-))

Now I've come to the point in my development where I need to figure out what's
the best method for transferring my svn files to my live site.

I've read that I should use a post-commit hook, which is fine I'm using a
pre-commit hook already so I'm aware of how they work.

My main question is: Which method is best for updating my live files? Should I
use rsync in my post hook or should I use svn update?

http://subversion.apache.org/faq.html#website-auto-update this page recommends
using svn update, but I wanted to get some input from the community too.

Thanks in advance!


First, both svn and rsync do atomic replaces of the file, so you don't have to 
worry about the live files being observed in some odd state.


There are tradeoffs.

- rsync will need to stat() each file in your working copy
- svn will only update the files that are newer; however
- svn currently requires a lock on each subdirectory

rsync will have two times the stat()'s, one for the source and one for the 
destination.


Probably for speed, your best bet is to time either.

In 1.7, I would definitely use svn, as the locking issue goes away.

Blair


Re: internal dirs showing up on update

2011-02-17 Thread Blair Zajac

On 2/17/11 12:50 PM, Bob Archer wrote:

I have so SVN repos (subversion) and I use them with no proble. But
when we do updates/commints on client (tortoise) we always get teh
internal directories:

conf
dav
db
hooks
locks
format
README.txt

These es are internal and should not appear right? How do I remove
this?


I assume these folder are in your repository. Just go into the repository 
browser in TortoiseSVn and delete the folders.


It sounds like somebody checked in a copy of a repo into the repo, in which case 
it's safe to delete.


Blair


Re: Could not read status line: connection was closed by server

2011-01-21 Thread Blair Zajac

On 1/21/2011 7:42 PM, 刘斌 wrote:

Hello everyone
I am seeing a odd problem.
one of my developers on windows 2003,running the CollabNet-supported
Subversion 1.6.15 binaries, does this command:
svn commit
following this error:
Could not read status line: connection was closed by server
on the svn server, there is nothing in the apache log.
but on the same machine, I open the Subversion repo browser, then create
folder\add files
which all can be successful.
what's the possible reason?do you give me any advises, thank you!


How are you connecting to the server, file:///, http://, https://, 
svn://, svn+ssh://?


If you're using http://, then try using https://.  If the later works, 
then there's something in the network that's affecting the traffic.


Regards,
Blair


Re: 207 Multi-Status error checking out WebKit repository on Windows

2011-01-06 Thread Blair Zajac

On 1/6/11 10:30 AM, Kenneth Russell wrote:

On Tue, Jan 4, 2011 at 5:29 PM, Blair Zajacbl...@orcaware.com  wrote:

On 12/25/10 5:42 PM, Kenneth Russell wrote:


Hello,

The WebKit project uses Subversion for version control and we are
facing a problem with fresh checkouts of the repository on Windows
with Subversion 1.6.6 (as well as earlier versions -- I've also tried
1.6.1). The reported error is with a specific file:

svn: PROPFIND of

'/repository/webkit/!svn/bc/19963/trunk/LayoutTests/fast/xpath/4XPath/Core/test.js':
207 Multi-Status (http://svn.webkit.org)

The WebKit project maintainers aren't sure what changed with this
particular file to cause this error to start occurring. I was only
able to get past it by copying the .svn directory for this
subdirectory from another Windows machine (where the checkout predated
the problematic changes to this file) and then continuing the
checkout.

Is this a known issue? Can you reproduce it by checking out the
repository (see http://webkit.org/building/checkout.html) with the
current (non-Cygwin) Subversion binaries?


If you try with an https URL, do you see the same issue?  That will avoid
any networking issues you may be running into.

https://svn.webkit.org/repository/webkit/trunk


Thanks for the suggestion. I was able to successfully check out the
WebKit repository on Windows with Subversion 1.6.6 from the https URL.
I haven't yet re-tried checking out from the http URL to confirm the
207 Multi-Status error was 100% reproducible on this machine.


Ken,

That's great.  Sounds like a proxy may be getting in the way.

BTW, some Googler's do work on svn, such as the Google Code people, if you ever 
need help :)


Regards,
Blair


Re: 207 Multi-Status error checking out WebKit repository on Windows

2011-01-04 Thread Blair Zajac

On 12/25/10 5:42 PM, Kenneth Russell wrote:

Hello,

The WebKit project uses Subversion for version control and we are
facing a problem with fresh checkouts of the repository on Windows
with Subversion 1.6.6 (as well as earlier versions -- I've also tried
1.6.1). The reported error is with a specific file:

svn: PROPFIND of
'/repository/webkit/!svn/bc/19963/trunk/LayoutTests/fast/xpath/4XPath/Core/test.js':
207 Multi-Status (http://svn.webkit.org)

The WebKit project maintainers aren't sure what changed with this
particular file to cause this error to start occurring. I was only
able to get past it by copying the .svn directory for this
subdirectory from another Windows machine (where the checkout predated
the problematic changes to this file) and then continuing the
checkout.

Is this a known issue? Can you reproduce it by checking out the
repository (see http://webkit.org/building/checkout.html) with the
current (non-Cygwin) Subversion binaries?


If you try with an https URL, do you see the same issue?  That will avoid any 
networking issues you may be running into.


https://svn.webkit.org/repository/webkit/trunk

Regards,
Blair


Re: can i svn cat without keyword expansion

2010-08-08 Thread Blair Zajac

On Aug 8, 2010, at 8:50 AM, Nico Kadel-Garcia wrote:

 On Sat, Aug 7, 2010 at 9:21 PM, Blair Zajac bl...@orcaware.com wrote:
 
 On Aug 6, 2010, at 3:16 PM, Bob wrote:
 
 Hi,
 If I do svn cat on a file, with the svn:keywords property set, it expands 
 out
 SVN keywords such as $Date$, $Revision$, $Id$, etc., in the file (the ones 
 there
 were included in the svn:keywords property anyway). Is there an option that 
 will
 NOT do the expansion? Or is there some other way of using the svn client 
 that
 will achieve the same thing? As I understand, the file is stored in the
 repository with keywords not expanded, and the client expands them when it
 retrieves them, so shouldn't it be trivial to have a functionality to skip 
 this
 step?
 Thanks,
 
 
 Do you want to do this for all files in a checkout or just get a file?  If 
 the later, you can use curl or wget if you're using http:// or https:// 
 scheme.
 
 The original poster in this thread asked about using svn cat and
 disabling the keywords: quite sensible, really.

Who said anything about not providing this feature?  I would find it useful 
when I do diffs also.  This was just a workaround if you needed a single file 
without keywords.  For a trees worth, of course, it would be painful to script 
to do a checkout without keyword expansion.

Blair



Re: can i svn cat without keyword expansion

2010-08-07 Thread Blair Zajac

On Aug 6, 2010, at 3:16 PM, Bob wrote:

 Hi,
 If I do svn cat on a file, with the svn:keywords property set, it expands 
 out
 SVN keywords such as $Date$, $Revision$, $Id$, etc., in the file (the ones 
 there
 were included in the svn:keywords property anyway). Is there an option that 
 will
 NOT do the expansion? Or is there some other way of using the svn client that
 will achieve the same thing? As I understand, the file is stored in the
 repository with keywords not expanded, and the client expands them when it
 retrieves them, so shouldn't it be trivial to have a functionality to skip 
 this
 step?
 Thanks,
 

Do you want to do this for all files in a checkout or just get a file?  If the 
later, you can use curl or wget if you're using http:// or https:// scheme.

Regards,
Blair

-- 
Blair Zajac, Ph.D.
CTO, OrcaWare Technologies
bl...@orcaware.com
Subversion training, consulting and support
http://www.orcaware.com/svn/




Re: Support for filesystem snapshots (?)

2010-08-02 Thread Blair Zajac

On 08/02/2010 01:27 PM, Stefan Sperling wrote:

On Mon, Aug 02, 2010 at 03:25:48PM -0400, Vallon, Justin wrote:

E.g. Subversion's FSFS needs to create a revision file from the commit's
transaction, and move the finalized revision file into place.
After the revision file has been moved into place successfully, FSFS also
updates the svn:date revision property and moves the revision properties file
into place (or copies revprop data into an sqlite database if you use
revprop packing). Then, it updates the 'current' file which contains the
number of the current HEAD revision. If you use representation sharing to
save disk space, the commit may involve further updates to yet another
sqlite database.

All these actions need to complete in order to have a consistent state.

If you're interested in seeing the code that does this, look at the
svn_fs_fs__commit() and commit_body() functions in
http://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c


I see this is executed with a FS write lock.  My concern would be
focused on the interaction between the commit code and any rollback
code.  For example, if the commit dies (any any point during the
commit), what will be required to insure that the repository behaves
as if the commit never started?  Will a repo cleanup be required; will
the next committer cleanup the partial rev automatically (ie:
overwrite stale files); will the repo be hopelessly inconsistent?


I honestly didn't know so I went and asked.
And learned something!

stsp  users asking interesting questions: 
http://mail-archives.apache.org/mod_mbox/subversion-users/201008.mbox/%3c6ec02a00cc9f684daf4af4084ca84d5f01c40...@drmbx3.winmail.deshaw.com%3e
stsp  i dunno how fsfs behaves in face of an interrupted commit; whether or 
not it needs to be rolled back
danielsh  if you haven't touched current than the rev file will never be read 
and will be overwritten
danielsh  stsp: does that answer your question?
stsp  i think so
stsp  because the rev file of the following commit will have the same name to 
move things into place onto
danielsh  write lock only for revprop change and commit
danielsh  :-)
stsp  so, using rsync for backup is fine?
danielsh  if you copy current first, yes
stsp  what's hotcopy for then? just bdb?
ehu  stsp: copying 'current'  first ... :-)

stsp  ok, so what happens if I don't copy current first?
danielsh  you can copy revs/
danielsh  then a commit happens
danielsh  then you copy current
danielsh  so you don't have all of revs/ that current claims exist
stsp  then I need to unwedge it
stsp  by decrementing current
danielsh  right
danielsh  and hopefully you haven't just crossed a packing boundary
danielsh  eg if you want to decrement from 1002 to 999
danielsh  and someone packed it already
danielsh  a bit more work

So in the event that 'current' says you are at rN but the rev data in the
repository is still at r'N-1', the repository will complain (I've tried
that, No such revision rN), and you'll need to decrement the counter
in 'current'.  But otherwise, the repository will continue to work.

Now, how does rsync, or a file-system snapshot, know to make sure that
'current' is always copied first? Even if you copy 'current' first manually,
rsync might later overwrite it. But unless you use packing it's trivial to
fix the backup if it breaks, and all you risk is losing the most recent HEAD
revision, which you may not have gotten with a hotcopy anyway.

Still, I think I'll keep advising people to use hotcopy.
It avoids the problem with a too recent 'current' file, i.e. the backup
is always usable out of the box. And who knows how Subversion's on-disk
formats will at change in the future.
The hotcopy approach will always be supported, and works fine if, as you
pointed out, you can make sure that a hotcopy is being backup up while
not being written to.


There's this tool that should order rsync correctly:

http://svn.apache.org/repos/asf/subversion/trunk/contrib/server-side/svn-fast-backup

But in general, you're correct, with the additions to the fsfs 
repository, this script is not always kept up to date.


Blair


Re: Is contrib status changing with apache move?

2010-07-23 Thread Blair Zajac

On Jul 23, 2010, at 5:55 AM, David Weintraub wrote:

 On Thu, Jul 22, 2010 at 6:25 PM, Joe Briggs
 jbri...@primetherapeutics.com wrote:
 I am not sure if it is kosher to ask about contribs on the list, but fools
 rush in...
 
 [...]
 
 My larger question is about contribs in general now that the project has
 moved to apache. The vendor branch management strategy in the svn book still
 refers to svn_load_dirs.pl,  but it is rarely included by those folks
 creating binaries for windows. (I am not sure about packagers for other
 platforms). Is there a thought about whether contribs will be left behind,
 or rolled in more?
 
 I wrote the list a few weeks ago about adding some new pre-commit
 hooks into Subversion, and the reply was that the Subversion project
 is no longer maintaining contributed software which would include
 hooks.
 

The contributed software wasn't ever officially maintained, just interested 
developers would own files in there.

 I found the script over at Fresh Ports
 http://www.freshports.org/devel/svn_load_dirs/. It looks like
 someone over there is actively maintaining it.

I think this is just pulling the files from the tarball, so it's not active 
development of the script itself.

If you send in patches to it, then somebody may apply them to the source.

Regards,
Blair



Re: Unclear syntax for relative addressing of svn:externals, on RHEL 5, subversion-1.6.12

2010-07-13 Thread Blair Zajac

On 07/13/2010 05:15 AM, Stefan Sperling wrote:

On Mon, Jul 12, 2010 at 05:57:24PM -0400, Nico Kadel-Garcia wrote:

I don't know why the syntax was reversed: it really looks like an
entirely unnecessary parsing complication.


The new syntax looks more like 'svn checkout', so it's more natural
to use when you're already used to svn checkout.


I would change it like this:


I think we should discourage use of the old syntax in both the output
of svn help and in the book. Diff to the help text below.
Would this improve things?


Sounds good to me.

I think this last sentence starting with The ambiguous format... 
should go before 1.4 is mentioned because it is relevant to the 1.5 format.


Blair


Re: svnadmin load to fsfs 9 times faster than bdb!?

2010-06-01 Thread Blair Zajac

On 05/31/2010 11:06 AM, B Smith-Mannschott wrote:

On Mon, May 31, 2010 at 02:52, Mark Phippardmarkp...@gmail.com  wrote:

You just need to specify --bdb-txn-nosync when running svnadmin
create. although it is possible that svnadmin load also accepts this
option.  This should make the load times about the same.

There is something you are supposed to change after loading the
dumpfile to turn this back on.



Yup, by creating the repository with --bdb-txn-nosync the time to load
the dump was reduced to about 9 hours (less than double the time of
FSFS).

db/DB_CONFIG is the place to go to get the safer behavior back once
the load has completed:

set_flags DB_TXN_NOSYNC


After changing any of the flags in DB_CONFIG you need to recover the 
database using svnadmin recover.


Blair


Re: What file system structure a SVN transaction follow ?

2010-05-01 Thread Blair Zajac

On 4/30/10 4:15 AM, Ravi Roy wrote:


Not really sure. making a file *svnlook cat* will definitely slow down
operations (specially for big files).
But anyway file has to be transferred to server before transaction size
could be computed.
So until commit is taking place, it would not be part of repo.
Does somebody knows an optimum way how this could be achieved without
causing performance bottlenecks?


If you use the SWIG bindings and the svn_fs API directly, then you can use 
svn_fs_file_length() to get the length of the file without catting it.


Here's the API that the bindings are build from:

http://svn.apache.org/repos/asf/subversion/trunk/subversion/include/svn_fs.h

Regards,
Blair

--
Blair Zajac, Ph.D.
CTO, OrcaWare Technologies
bl...@orcaware.com
Subversion training, consulting and support
http://www.orcaware.com/svn/


Re: Can we use relative paths in svn:externals propset?

2010-04-29 Thread Blair Zajac

On 04/29/2010 01:09 PM, David Bartmess wrote:

I have two projects under a single repository, with A being dependent on
B being checked out.

To set the svn:externals propset, can I use a relative path for the
checkout directory for the depending (B) directory?

Such as :

svn propset svn:externals ../buildsupport
http://URL/buildsupport/trunk BuildScripts

Will this work? I can't afford to try it on that repository since it's a
live development repository...


You can always try setting up externals by modifying them in your 
working copy and running svn update and see if you get the desired 
result.  You don't need to commit the change to test it.


IIRC, you can't have a relative path to a directory outside the 
directory where the external is, as it doesn't know if it's a Subversion 
working copy or not.


Blair


Re: Common name for transaction and revision object

2010-04-28 Thread Blair Zajac

On 4/28/10 6:46 AM, Giulio Troccoli wrote:





Linedata Services (UK) Ltd
Registered Office: Bishopsgate Court, 4-12 Norton Folgate, London, E1 6DB
Registered in England and Wales No 3027851VAT Reg No 778499447

-Original Message-



From: Geoff Rowell [mailto:geoff.row...@gmail.com]
Sent: 22 April 2010 14:21
To: Giulio Troccoli
Cc: users@subversion.apache.org
Subject: RE: Common name for transaction and revision object

Giulio Troccoligiulio.trocc...@uk.linedata.com  wrote:


I'm writing the hooks for a new repository in Perl and I'm

exploring

using

OO Perl. In both pre- and post-commit hooks I need the list
of files, the author and other similar information. My idea
was to define a class and create an instance of that class
given either the transaction number adn repository path or
the revision number and the repository URL. The 'new'
function will then initialise all the information I need
calling either svnlook or svn. For instance:



As you can see they are almost the same, so it would be

nice to have a
single class (I could then check the second parameter to see
if it's a URL or a path and do things accordingly). But I
cannot come up with a single name that would encompass both,
and that's what I'm asking the list.


So, any suggestions?




Sorry, for posting again but I haven't received any suggestions regarding the 
name. Nobody can come up with anything? Really?


If you look at the svn_fs.h API, they are both referred to as revision roots. 
svn_fs_revision_root() and svn_fs_txn_root() both return a svn_fs_root_t * object.


Blair


Re: Common name for transaction and revision object

2010-04-28 Thread Blair Zajac

On 04/28/2010 02:38 PM, Ryan Schmidt wrote:

On Apr 28, 2010, at 10:03, Blair Zajac wrote:


If you look at the svn_fs.h API, they are both referred to as revision roots. 
svn_fs_revision_root() and svn_fs_txn_root() both return a svn_fs_root_t * 
object.


That does not sound like they're both being referred to as revision roots; that sounds 
like they're both being referred to as roots.


Oops, yes, they are filesystem roots.


If you're just looking to name a variable, you can call it 
RevisionOrTransaction.


I've done that in code I've used, or RevisionOrTransactionRoot for my 
use case.


Blair


Re: windows vs unix question

2010-02-01 Thread Blair Zajac

On 02/01/2010 12:19 PM, Andy Levy wrote:

On Mon, Feb 1, 2010 at 15:14, Robert Nursernu...@gmail.com  wrote:

Is anyone familiar with the SVN client in Dreamweaver CS4?  Development is
performed on Windows boxes.  But, the server is on a Sun box.


All Subversion servers and clients with the same major revision number
(1.x.) are compatible thanks to the Remote Access (RA) layer.

Depending on the specific versions being used at each end, some
features may be disabled but the basics are there. I'm not able to
find anything online which indicates *which* release of Subversion CS4
has built into it.


As I recall it's a 1.4.x release.

Blair



Re: Version of a single file

2010-01-11 Thread Blair Zajac

deostroll wrote:

Is it possible to get the version of a single file inside a repo?


What do you mean by version?

You can use svn info on a URL to the file.

Blair

--
Blair Zajac, Ph.D.
CTO, OrcaWare Technologies
bl...@orcaware.com
Subversion training, consulting and support
http://www.orcaware.com/svn/