1 Mar 2005 04:49
Re: patch implementing restart, other features
Leo Davis <ldavis <at> fonix.com>
2005-03-01 03:49:27 GMT
2005-03-01 03:49:27 GMT
Hello, >Wow! Thanks for all the great patches. Unfortunately (as you probably >noticed), I have split much of the code up since 0.3.3 and hadn't >planned on changing it (the 0.3 branch) anymore, but there is too much >good stuff here to not use it. I'll probably throw this into a 0.3.4 >release and backport (foreport?) what I can into trunk. Yes, I saw that you split 0.3.3 into modules. I didn't know what state trunk was in, because a couple of things looked newer in the old codebase (DST comes to mind). I was also unsure how to deal with the modules, too. >> Idiosyncratic features you may not want: >> -- the ability to substitute a SS regex pattern that denotes a single >> file. I needed this because I had such files in my SS (!) and had no >> idea how to get them out (never mind how they were allowed in)! > >I'm sorry, I've read this three times and can't grok it. Are you saying >you allow a regex to specify files which should not be migrated? (I >haven't looked at the code in-depth yet, maybe it will be clear after I >look into it a bit more). Ok. Here is my situation: I have files that have been checked into VSS that have as the first character dot (.). For example: "$/foo/.foo" . I have no idea how these files made it into the project, but they are there. I chose to try and migrate these files. Now when I try and get history for "$/foo/.foo" ss.exe errors and the script dies. Fortunately for me, these files are named uniquely enough that a regex for "$/foo/.foo" (for example "$/foo/?foo") will uniquely identify(Continue reading)
> I can't think of any way to reliably fetch from VSS while a previous SVN
> commit is occurring. There would be a race condition allowing the
> possibility that VSS would overwrite a previous version with a newer one
> before SVN had a chance to commit it.
I don't know the details of how SS works, but maybe you can have a set
of numbered directories where the changed files for each changeset are
checked out to (a ring buffer). Another part can then swallow them into
the working area for svn as it does each transaction.
Also using Process Explorer from sysinternals.com, I see that a CMD.EXE
is started to spawn each svn.exe. Things would be just that little bit
faster directly invoking svn.exe rather than indirecting through a
command interpreter.
You may also be able to reduce the amount of disk thrashing every time
svn.exe is run when committing transactions. As far as I can tell, svn
commit is run each time from the top of the working copy. It would be
better to run it from as deep into the working copy as possible that
encompasses all changed files. Even just distinguishing the case when
one file has changed vs more than one would help since a significant
proportion of changesets only involve one file.
The reason why speed matters is simply that repository conversion needs
to take place in less than a weekend to allow a clean changeover!
There is also another buglet. If someone changes the same file twice
with the same comment with no other commits inbetween then it is
regarded as one changeset. The earlier short lived change is not seen
or noted in the svn history.
It would be really nice if there was a 0.3.4 with 3 simple changes:
- ignore labels seen in history
- invoke svn.exe rather than going via command interpreter
- being as specific as possible in the svn commit command
Roger
RSS Feed