Pragmatic Version Control Using Subversion
Chapters on repository layouts, integrating third party code (into your source tree and products) and conflict resolution all help raise this book from just being a single application tutorial into a best practices guide that you'll come back to long after you've gained confidence with Subversion itself.
Pragmatic Version Control Using Subversion is very similar to Pragmatic Version Control Using CVS, but this is in no way a criticism! The previous book was the best introduction to CVS that I've read, and this related volume manages to retain the winning formula while adding useful sections, such as CVS hints, to help people migrating across.
While the book has a broad appeal, the ideal audience are those developers who know they should be doing version control but have heard it's too complex, have been burnt by previous mistakes, or just don't know where to start. Seasoned developers will also find this book useful, but in different ways. For instance, using it as an easy to scan and follow reference, handing it down to less experienced colleagues, or even just for quickly bringing themselves up to speed when moving from CVS to Subversion.
Considering the book's slim size (or quick download, if you purchase the PDF version) it packs in surprisingly wide coverage of the important topics. The first two chapters provide an overview and sell the benefits of using a version control system. They cover what should and shouldn't be under version control, and clearly explain the terminology required to understand both the technology in general and the book's later chapters.
Chapters 3, 4, and 5 get you working from your own Subversion repository and introduce the essential commands. They show how to create, add and import your projects in a clear, easy-to-understand way. Once you have some files to work with, they take you through a well-paced tour of the simple operations; checking out, committing and accessing the files in different ways.
Following these, Chapter 6, "Common Subversion Commands," shows some of the more complex but essential tasks you'll want to perform in Subversion; setting properties, looking at changes and their associated history and how to handle merge conflicts. These are all presented in short sections that provide enough information to be useful on a day-to- day basis while not leaving beginners bogged down in the minutiae.
Jumping ahead slightly, we leave the part of the book that everybody using Subversion should read and move onto the more powerful, and complex, functionality such as "Using Tags and Branches" (Chapter 8) and the more abstract topics of "Organising Your Repository" (Chapter 7) and dealing with "Third Party Code" (Chapter 10).
Chapter 8 stands alone in the second half of the book due to its coverage of a very technical subject; chapters 7, 9 and 10 are more abstract. Tagging and branching are one of the more notorious areas of version control, but this book -- much like the CVS book before it -- manages to explain not only when and how to use both tags and branches, but also provides enough guidance to allow the reader to 'smell' when something's wrong and adding them would make it worse.
Chapters 7, 9 and 10 logically combine to cover the issues surrounding setting up your own project, including the project's structure, the integration of third party code, external projects, and binary libraries such as Nunit or Java mock libraries. Considering the amount of maintenance coding (as opposed to new projects) that happens in the world, these chapters might not be immediately useful to a fair chunk of the readership. I don't think they should be removed, though -- better to leave them in and show best practices and experience-driven common sense than remove them and let people make the same mistakes over and over again.
It's worth noting that the appendices are a lot more useful than the filler material typically found lurking at the back of a book -- they cover a couple of topics that don't fit elsewhere and help round out both the book's coverage and appeal.
Appendix A is more relevant to system administrators than developers. It shows how to install Subversion on the server. It then gives a brief introduction to configuring, serving (using either the native svnserve, svn over SSH or via Apache) and adding basic security to your repositories. It finishes off with a short, but useful, digression into backing up your hard work.
This appendix provides a valuable, quick guide to getting a Subversion install in place. It's a good starting point for anyone who needs to actually run and maintain a Subversion server.
The remaining appendices vary in usefulness. Appendix B is a concise introduction to migrating a CVS repository to Subversion; this is something you either need desperately or won't care about. Most of Appendix C shows how to perform common tasks using the TortoiseSVN extension for Windows Explorer; this won't appeal to the Unix/Linux crowd but might help sway Windows developers away from the hell that is Visual Source Safe.
In short, whether you're new to version control in general or just Subversion itself, this book is highly recommended. Clear, concise and crammed full of useful, important and dare I say, pragmatic, advice and information. An excellent book in its own right and a worthy addition to the Starter Kit Series.
Dean Wilson is a System Administrator at Outcome Technologies. His personal site is unixdaemon.net. You can purchase Pragmatic Version Control Using Subversion from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page
CVS ? SVN ?
;)
Gnu Arch !
--
let the flame begin
all of this inane speculation and wanking is why CS has become a self-parodying soft science.
HA! Their kung-fu is no match for mine!
.. but how does this book stack up to others on the same subject?
Excellent, we are about to start a ditch digging project shortly and a pragmatic guide to ditch digging would be invaluable.
Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
What truth?
There is no dupe
For those looking for Subversion documentation, there's also an excellent Subversion book, with electronic copy available for free, at http://svnbook.red-bean.com/
My only problem with Microsoft is the severity of bugs in their software.
...Subversion support is one of the most requested features on RubyForge.
Is there a StatCVS-type reporting tool for Subversion? I suppose StatCVS could be modified to support Subversion... there's been some discussion of it on their mailing list...
The Army reading list
Pragmatic Version Control Using Subversion
as
Pragmatic Version Control Using subterfuge ?
Maybe I've just been doing too much sneaky stuff today...
The Subversion Book seems to have most of what you need to know and its free as in speech and beer.
from the review it does seem to have a couple of chapters about general project organization that aren't in TSB. Otherwise it the list of topics seems to be right out of the oreilly book.
Parent is offtopic.
they've begun to gain a reputation for writing, editing and finding book authors
Good for them, how do you edit a book author though? Remove a finger or two if they don't send you their rough draft?
Executive summary:
By the way, the GCC team is starting to make experiments with svn, and it looks like they might switch in 2 or 3 months.
So as a crusty old fart who hates changing tools just because they are new and cool, and am pretty much happy with CVS, what is it that subversion does better than CVS that should make me want to switch?
And this is a real question asked for the puposes of gaining information, just just a snide "here is a nickel go buy a real computer" kind of remark.
What is this subversion thingy and is it better than Perforce?
I'm looking for something similar to Perforce but free. Any ideas?
The book sounds very interesting, but the way it is described makes it seems like it only goes through the basics. What if you want more in-depth reading on tagging and other simple necessities that you cant go without knowing about well?
http://www.cvshome.org
The book isn't even available yet (see the link from bn.com). One must presume the reviewer got an advance copy from the publisher, who may have given it away expecting a favorable review.
What reason do we have to to believe that this review isn't complete astroturf? What is his relation that caused him to get an advance copy?
It may well be an honest review, but I'm inclined to be a lot more skeptical. Especially since there is no mention in the review of the fact that he got an advance copy.
I've read the free subversion PDF, and I was interested enough to install it for use at home on my Windows box. The PDF does a great job of describing subversion's revisioning system, which is based on tracking directory revisions rather than file versions. That's great and all, but I've never read a valid explanation as to why this is a better way to do things than the way VSS and CVS work. VSS and I think CVS also use file revisions which makes it super easy to look at one file's revision history. With Subversion, how is it beneficial to have a file that hasn't changed have its revision number incremented on every check-in? Doesn't that make it very difficult to track changes to one source file? Does the Pragmatic Programmer book delve into source control theory at all?
Sample excerpts from the book are available in PDF format from the book website. You can also download the full Using Tags and Branches chapter artima.com (free login required).
<gripe>Most tech books these days have a page on the publishers website, and some offer a sample chapter for download. Book reviewers should include a direct link to this book page, and note what excerpts/chapters are available for preview, if any (and prevent people like me karma whoring).</gripe>
We are switching from PVCS to subversion. Besides being pretty crappy and expensive, PVCS uses the lock/modify/checkin paradigm. Every time when I convert a PVCS user to Subversion they are scared because of the edit/conflict/merge idea. "OHMYGOD I have to lock my files or anything can happen". (Because I am not articulate) I have a hard time conveying the benefit of the CVS/subversion way.
My rationale is that if two people need to modify a file the conflicts exist independent of the version control mechanism, its just that locking serializes modifications and and merging has you modifying in parallel and then fixing it all at once, which is more efficient than making someone wait. Not to mention the idiots who lock everything and then go on vacation.
I usually just say 'try it and you will see that subversion is way easier to use and the rare conflicts are easy to merge'.
Any recommendations?
- Atomic Commits
- Faster tagging / branching
- Natively client/server
- Directory structure versioning
- File rename versioning
- etc.
Anyone have success stories in moving from CVS to Subversion? Any caveats?I've played with cvs, subversion, arch, darcs and I honestly think darcs is easiest to use and best of all of them I've played with.
The only thing I would change in darcs is the way it handles binary files. It can't apply patches to binary files, it has to save full copies of them. Not very condusive to projects with lots of binaries.
Subversion, on the other hand handles this better.
But I still like darcs better... its features are sweet.
Just install Subversion, configuration and maintenance is a breeze. Which makes me happy because I have to use it and administer it (or not in the case of svn:)
I love it so much, I am actually considering installing svn on my families computer so they can keep track of their most beloved digital documents as well.
JsD
darcs has been a real plasure to use. very easy, intuitive, etc.
Just because bn.com does not have does not mean that it is not available. It looks like you can purchase and view at least the PDF version right now. It seems that the dead tree version is shipping immediately.
n de x.html
http://www.pragmaticprogrammer.com/titles/svn/i
Yes, um, sir, we would like to switch to a new version control system. No, it's not because of a problem with SourceSafe. Actually we stopped using SourceSafe several years ago. Yes, sorry we didn't inform you. Yes, we realize that cvs is not sold by Microsoft. Yes we would like to switch now. The new tool? It's another open source tool. Actually, it's called "Subversion".
I switched to subversion from CVS to get the file renaming, but disliked the binary repositories, whether as a Berkeley DB or binary files, so I tried darcs, and it is just fine. I don't see it as any mind boggling revolutionary change, but it is more of a change than CVS to Subversion. I also like it having ordinary repositories, no special binary format that hides everything. There is something refreshing and liberating about the way it works. I could not go back to CVS or Subversion without feeling like I had to wear a suit and tie again after having not worn one for 30 years.
I don't see darcs as being a big change from CVS and Subversion in how to use it, not in any way that requires a mind warp to use. Different, sure, but still just version control, only done better.
Infuriate left and right
I wonder if SourceForge will ever move from CVS over to subversion. Maybe they could setup a temp program to allow people choose which way they use. The benefits subversion brings to OSS soruce control is really amazing.
But it is hard to say how well subversion would handle the load. I'm guessing sf.net has done a lot of tweaking to get CVS to handle the number of projects they currently have, and moving everyone over... or just supporting both, is greater than the effort they want to put in.
Maybe some day...
Its not what it is, its something else.
The way I like to put it to point out why ClearCase and others of its ilk are such a beast to work with compared to CVS, is that broken merges are fixed BY the people that cause them, BEFORE they screw up the repository.
With the "normal" source control systems that use the reserve/checkin style, a programmer may work on several files - perhaps they even work on them unreserved to be nice to others (as is becoming policy here).
You still have the issue of "The Merge" That is, the programmer doing the development is nt getting changes made to those files while he is working, and others are not seing his work.
So when it comes time to check in all the files, a prigrammer checks most of them in - but then possibly runs into issues with merges in the last few files. Lots of commercial merge tools seem poorly designed to help the average programmer deal with issues, sometimes they simply automatically hose the merge without the programmer even knowing.
Using a CVS system, the programmer is able to keep in sync all through development by constantly updating files. That means that issues caused by him will also be resolved by him on the fly, instead of someone else discovering a merge went wrong later. It makes the day of checkin no longer something to fear, since you are already synchronized and can be reasonably sure the system works BEFORE you do the checkin, instead of checking after and possibly having a broken build.
Sure that checkin might cause someone else issues, but they will tend to be isolated to a developer and not affect the whole team at once.
So basically CVS style operation encourages programmers to keep in sync with what other people are doing - I honestly believe that if it did not work this way and people were forced to deal with reserved files, the whole OpenSource movement would be a fraction of its current size and success.
Yes I know ClearCase can kind of do something like that, but not very well and I have seen clear case totally bungle automatic merges before.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I've been using Perforce for awhile for a personal project (their "trial version" is a perpetual 2-user free-as-in-beer license) and I have to admit, I'm hooked on the speed. CVS on the LAN at work is an order of magnitude SLOWER for edit/commit operations than Perforce on a 512K upstream DSL connection.
I've thought about moving to Subversion just so it would be cheaper if I ever had to scale my "personal project" up past two people. But honestly, I think Perforce is well worth the US$750/seat for the sheer speed it offers.
Anybody have any idea how SVN compares?
Subversion isn't the only choice for people looking for relief from SourceUnsafe. CVSNT is an evolved and mature CVS that you should look at too.
http://www.cvsnt.com/cvspro/ for the server
and http://www.wincvs.org/ for a gui client
Mergepoints in cvsnt are very cool and wincvs is a powerful client. Since cvsnt runs on Windows and many unixes, you also have your choice of platform as well.
cvsnt is a project that has been around over five years (at my reckoning) and has a good following. Plus you can get commercial support for it from March... what more can you ask for from Free software?
Do not spread "09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0" over the internet, thank you.
I perfer to use intimidation:
"Touch my code and I will beat you with silly with a rolled copy of the original spec docs."
Seems to work for me.
-- TMKI tried Subversion but it lacks a cool graphical interface like WINCVS, for the rest it seems to be nice
Untill a client GUI is available I will not start looking at it again.
greets
There are no stupid questions, Just a lot of inquisitive idiots. (from a good friend)
Besides Tortoise, you should also check out RapidSVN. I tried them both and I like the RapidSVN Gui better. Both of them are open source.
Since SVN people are about, could some answer these two questions. How's the branch switching code looking nowadays and what's the status of read-only files in the repository?
We tested Subversion in November against our working CVS system. It was fun, and we were all really happy with it until...
When switching between two branches, a file that was moved caused the switch to fail. The local sandbox was broken to the extent that nothing short of re-rechecking out the repository would fix it. All subsequent commits, updates, or attempts to switch back would not work.
The second thing that bit us really bad was that we have applications that set source code controlled files read-only. This is intentional and necessary; if they are not read-only, the files will be changed automatically when certain tests are run which is something we do not want. Despite this, there are times when those files need to be updated. SVN crashed and burned trying to checkout changes over read-only files. All the research reading mailing list indicated that the prevailing thought at the time was that read-only meant read-only from SVN.
That's not how it works in CVS at all where we currently use watches and locks to get this functionality. Read-only is an attribute of the file. When some checks out the file, it must be read-only when it arrives in their sandbox. The file and the sandbox is managed by source control so aside from user permissions, the last word on whether a file can be modified is that of the sandbox manager, not the filesystem. In short, if CVS or SVN need to write over a read-only file they should be able to do it so long as the file is read-only when the job is done.
With the read-only detail and the sandbox corruption issues open, we had no choice but to return to CVS. I am seriously looking forward to what Subversion has to offer in the future though.
Hope
Get a printed version for 9.80t p://svnbook.red-bean.com/en/1.0/svn-book.pdf&pppem ail=jdrake@gmail.com
http://www.printfu.org/?mcAction=pdfURL&pdfURL=ht
It's my understanding that the file system repository is also binary. I really like CVS's text repositories for two reasons. One, a vague sense of security, that if a file gets corrupted, I can at least make an attempt at manual repair. Two, I can do a quick read-only edit of a repository file to see some code, I don't have to waste time with checking it out, just go look. Grep also works on it. If I want to find some code that was put into Attic a long time ago, grep works wonders. I don't know how you'd do it with Subversion.
I also had a minor scare with moving subversion (with a Berkeley DB repository) from a Pentium to an Opteron system. The repository size, using dump and restore as recommended by the subversion docs, grew by (IIRC) a factor of around ten. I do not understand this. Merely going to a longer word size would have made no difference to a CVS or darcs repository, being text, and I could think of no reason to more than double for a binary repository. That is what prompted me to look for alternatives, and how I found darcs, and I won't go back to either CVS or Subversion.
Infuriate left and right
Has anyone considered the case where both CVS and SVN need to be supported in parallel?
The biggest problem in changing source control is the fact you must block all dev work while the transition happens. If your software moves fast enough there might never be a window of opportunity to lock the archive, move the code and open the new archive.
What would make any transition easier is somehow maintianing both. Knowing the basics of how both CVS and SVN work and only giving in a few minutes of thought (because work won't let me have the time to plan things) it seems almost possible with shell script-fu. The goal is of course that during a given transition time window you can do either a "cvs update" or a "svn update" and get the same code. At some later date you can turn off one archive and move forward. Of course there is the quirk about exactly how revision history is maintained in this situation but something is always lost in the transition unless you use or build tools to carry the data with you.
Books like this are great but I would rather seem some hardcore information on transition scenarios. Learning a new revision control system can be tough (although I don't think SVN is that daunting) but not as scary trying to switch revision control systems.
I would like my company to switch to using subversion to take advantage of all of the features it offers, but my biggest question is stability. Though CVS may lack a lot of features, after upteen years it is very stable. I've heard subversion stores its revision info in a single file, and if that file becomes corrupted, you're SOL (note other SCM systems have this problem, like Perforce). Does anyone have more info on this?
PuTTY converts to svn:/ svn.ht ml
http://www.chiark.greenend.org.uk/~sgtatham
(much) smaller project than mono, obviously; interesting all the same.
So tell me, when you do an unreserved checkout how do you easily merge current changes for that file from the view into your working copy? How do you do that in batch for all files you are working on?
The if you can do that, how do you specify a real merging tool that will not screw up the file or get lost if someone alters whitespace?
"There is more worth loving than we have strength to love." - Brian Jay Stanley
So, does the Eclipse support still suck? Since the last time I looked, there at least seems to be a 100% Java SVN interface which replaces the hell that was JNI, but it doesn't seem to support all features...
Jon.
You notice that only about 40% of the replies are actually about anything remotely related to Subversion, let alone Version Control Systems in general? Just an observation. But back to the topic, I don't know why there aren't more books about subversion out there already.
I introduced the company I work for to Subversion. They now use it will all new projects. All prior existing projects still use CVS. I also created a full featured (including per project, directory level permissions with inheritence capabilities) web-based client in PHP that is tied into dotProject. Most web based interfaces to SVN that I found back when I started the project failed to consider that some people need restricted access.
Most people just use Tortoise though. The web-interface is nice for browsing repositories and downloading single files but when you need more stuff done, then Tortoise is ideal.
Work Safe Porn
Actually my preferred means of working now is not even unreserved checkout, but simple hijacking - which comes closest to working the way you can with CVS.
I'll check out findmerge and see if I can get a script using that to approximate an auto-merge into my existing file.
Seriously though, if anyone knows how to tell clearcase to ignore whitespace for diffs, that would be fantastic. We've had a few people look at that but no luck.
I could see somewhat why companies would use a VC system that supported directory changes, but now that Subversion seems to be pretty well ready for primetime hopefully the age of clunky VC systems is over.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
About two years ago, I switched a large project from CVS (three years of revision history) to Subversion.
We were able to migrate it all easily. We have developers using both WinXP and Linux. The Eclipse client was kind of broken at first, but recent versions have been acceptable. I've been able to forget all the workarounds and weird issues that caused us headaches with CVS.
Overall a very good experience - I would say Subversion doesn't add anything groundbreaking to revision control, but rather is CVS done really really well.
Right, so have you read about arch?
SPAM
The one thing that has me mystified is how svn seems to be corrupting my binary files.
I do a
svn add *
and it recognizes that a particular file (a CAD file) is binary, but when I commit, I see that the file size has increased and now my CAD software can't read the file!
What is svn adding to binary files? Surely not those properties you set with svn propset etc?
Sadly enough Turtoise SVN does give the user some control, but for advanced tasks it realy is not up to the task.
If you have to merge or repair some fuckups from others (done alot, i can say i am a hardened CVS manager) it is a must to have a visual tree of all the changes and diff whatever version you want.
Sadly enough that is not supported with turtoise.
I hope it will come soon though
Greets
There are no stupid questions, Just a lot of inquisitive idiots. (from a good friend)
SVN over http is noticably slower than svn+ssh through svnserve in my experience. The "svn book" seems to lean towards http, since (IIANM) it was there first, but svnserve really is a simpler choice. (Useradd and you're set.)
I've actually never had an svn repository local to me. (I used perforce locally for 3 years.) I suspect svn+ssh is within a factor of 2 or 3 of perforce..l. certainly fast enough for anyone used to cvs.
I did mean during analysis. However whatever ClearCase uses to diff does not seem to understand the concept of ignoring whitespace changes. I too have many other diff tools that work properly, but they are a lot harder to work against the vob for checkin conflicts.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
No, it can do exactly that, and very well. If it is set up correctly, basically designers can create their own side-stream, and do repeated merges into it to keep up to date.
So where can you find more information on ClearCase side streams and bringing in external changes? I have ever been frustrated by a lack of good ClearCase documentation, and whoever set up our ClearCase systems at work sure does not know about this.
However, I still find setting up a sidestream (private branch? Google had nothing on ClearCse sidestreams) a lot of bother when under CVS I can simply edit files and merge in all changes as they come. It literally is the least amount of work possible for the best workflow, and if the sidestream thing works like private branches then I fear the version tree would be a nightmare from daily merges into a private branch over time... I'll reserve judgement though until I get more details and try it out. If all you do is create a private branch once then I guess the overhead is not too bad... as long as the merging works well.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Can anyone comment on svn support for cvs "modules"?
The use case I have in mind is that we have dozens of directories in our repository corresponding to different components. Some components are shared by several products. Individual products pull different sets of components together. In cvs, you just use "aliases" in the modules list for this. It's a more than minor bummer than cvs doesn't follow directories/components being added to or removed from a module, which is why I had hopes for svn and its meta-data abilities.
The closest thing I could find in the svn docs was "external" links, but since svn doesn't recurse into them, they're not nearly the same.
The last time I did some searching on the web and svn mailing lists, I noticed several others with a similar use case, and no interest from the svn developers (some negative vibes, in fact).
If you don't like SVN or Arch, try Darcs http://darcs.net . It reminds me of BitKeeper quite a bit, and literally makes CVS look like a joke.
This was subversion's dump program on Slackware Linux, to a single dump file, then restored via subversion on a Gentoo Linux system. I doubt Berkely DB or subversion is writing sparse files anywhere in that process, especially since it wrote all the repository files that went into the dump too.
It may have been perfectly normal, but I didn't like it, and didn't want to find out the hard way that it had made a boo-boo.
Infuriate left and right
It sat stagnant for so long I thought for sure it was a goner. Good to see it's back in action. Is the project seeking developers? There are a lot of user interface issues that could use some work in my opinion. Maybe we can contribute?
The man who trades freedom for security does not deserve nor will he ever receive either. - Benjamin Franklin
One of the problem with ALL source control systems is the lack of portable change sets.
I would love to be able to duplicate a project and then import their changesets into mine keeping it synced no matter what source control they are using. This would save bandwidth because I only need changes not the whole repository.
To my knowledge there is NO standard for change sets and if there are it certainly is not actively being used.
Go to the library and ask them to order the book in. In Australia this is a free service.
They actually can do this, I have used this to read an obscure book I could not get any other way.
I agree for Python you'd be in a serious hurt if merges ignored whitespace!!
However for so many Java programmers on the earth with auto-indenting editors, life is hell when the merge cannot detect whitespace changes alone, and gives you a maddening number of conflicts for things that should have been simple.
Or even ignoring Java, take XMl files, which may be generated or again reformatted by editors. ClearCase is at its worst with XML files, I have seen it just give up a number of times, throw up the white flag and say the whole file is "different" even if you'd just added a four-line node and re-saved the file!!! Crazy stuff, and the main reason I have grown to loathe ClearCase. Plus it requires some serious know-how to admin properly, always a bad idea to require support people to know anything about what they are doing.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Great to see a new version coming up. I was considering writing a review for Slashdot of this series. I like O'Reilly a lot, but to be honest they have nothing as good as this. If you are a Java programmer you should get all three.
Second book in series is best. It has a huge number of "best practices" I haven't found anywhere else - how fine grained tests should be, how to make sure you write all the important tests ("Right-B.I.C.E.P.") and so on.
So with this new book the series is now:
1: Version control with {CVS, Subversion}
2: Unit testing with {Junit, Nunit}
3. Pragmatic Project Automation - How to Build, Deploy, and Monitor Java Applications
Ok, I'll finish gushing now.
Being bitter is drinking poison and hoping someone else will die
All user-groups like LUGs and Perl mongers get review copies.
I saw this review on the london perl monger list before it appeared here. We (the london perl mongers) have a good relationship with several publishers and include several Authors and many people who have had technical imput on books.
I know Dean personally and have worked with him. He isn't astroturfing, he has a full time job and still has time to get involved in local groups and contribute. Perhaps if cysgod was smart enough to use google this would become apparent immediately.
It's funny that almost everything like this kind of applications (version control systems, in this case) eventually boils down to a DBMS (and often an RDBMS). Here is a list of similarities:
-Directory versioning: directories are modules in their own right; i.e. tables with contents.
-atomic commits: transactions
-Versioned metadata: any data in a table
-Choice of network layers: database apps already work with server/client and web models.
-Efficient branching and tagging: copying tables and data and inserting new data.
-Hackability: database APIs are plentiful out there.
The above really says that it's time to throw away traditional filesystems and use database management systems. Traditional file systems do not justify their existence: they cover so minimum functionality these days...DBMSs is the proper way to manage information. Versioning systems simply fill in the void between traditional filesystems and DBMSs.
We practically never use svn:externals, we just copy the library to share into a "deps" folder.
When we think we've done enough improvement for the library to make sensee to other lib-users, we merge the local changes into the shared location of the library.
If a new (well tested) "release" of the library emerges, we check if it's got the changes needed for the specific project that has a copy. now there are two scenarios:
1. all changes are included: just rm and recopy lib to deps-folder
2. not all changes are included: either stay with the version we've got or merge relevant changes into our local copy
This works REALLY well, allowing project to decide when changes to their dependencies are to their advantage.
--
Helge
SLOGEN [ http://ungdomshus.nu : Sebastian cover music]
CS slowly expands the amount of tools in the pragmatic tool-box.
...
...
The goals of CS and pragmatics are different:
CS investigates boundries to computing: performance, resource use,
Pragmatism is about just looking for "enough" to complete a specific task
If you have a task/project with a very specific goal, you'd better be pragmatic, or you will delay delivery of the goal. If some CS (or related) thought up a great way to to this, like a compiler, algorithm, data-structure, language,
then that's GREAT, if not, then you better solve the problem with the absolutely least amount of effort
SLOGEN [ http://ungdomshus.nu : Sebastian cover music]
history-tools, that is. But most people want more than an archive what stupid mistakes they have made over and over. Sometimes you want to restrict who can do what, by using specific roles in the project, So your youngest intern may be able to check out the code and develop a change to it, but he may not check that change directly into the baseline.
You als need to assure his change does not break other stuff, makes mistakes others have allready made.
In ohter words, you need aegis for that.
Have a look at it at here. You will like it if you are serious at software development for more that trivial programs.
This space is intentionally staring blankly at you
we did our job
I don't think I've ever heard anyone else refer to BitKeeper as expensive in relationship to ClearCase. Did you do something to piss Larry McAvoy off?
You trade in dug ditches? How do you effect the swap? Do you move the ditch from the new location and fill in the old?
You, sir, are as oxymoronic as a professional athlete.
Because there is a reasonably good book available for free online.
Maybe even arch.
How do I tell what date a branch was created on with cvs??
I want a new world. I think this one is broken.
What a great comment! I'm a developer with 8 years in the industry and I came from a strict CS background (UMass Amherst). I've always felt that the background I recieved at UMass was a great help in the work field but usually didn't directly help me solve real world problems. So I suplimented some of the standard CS courses with the more applied engineering courses and internships to give me real world experience.
I think the comment above is a great approach to the "science" of software engineering. Seeing what people are really doing and using that as a focus for new theory and achedimic development should be a good way to lead achedimia in the right direction. I had to go "against the grain" in college to get the proper mix of theory and application. It's good to see others are looking along these lines.
--
Dan
We use Subversion here at my company and have had a great time with it. When we moved from CVS we had a few headaches but the documentation is so good that we had an easy time figuring it out. Now we have all of our projects in Subversion repositories. Life is good....
Then we loaded a project onto SourceForge. Back to CVS. I screwed up the initial import and had to remove a bunch of files. Do you know how this is done? By sending a request into SourceForge.
Already I miss Subversion.....
--
Dan
I got svnserve working without ssh, but I had no luck doing it with svn+ssh. I read the relevant chapter in the Subversion manual, and tried it and it does not work.
With Subversion, your commit either succeeds or fails. And you have to have your repository up to date before it lets you commit. This is a good thing.
On my current project, I can't tell you how many times I've updated the code from clearcase, went to compile, and OOPS! Compile fails. I don't know if it's because somebody's commit half succeeded (I have had commits half succeed and then die off) or if I check out in the middle of someone's big commit. But it really irritates the hell out of me that the repository can so easily get into an inconsistent state.
I have never had svn do this to me because I never see somebody's half commit.
"Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
Does CVS meet your needs? Keep it!
Others have responded with the advantages of SVN over CVS. Personally, I prefer SVN. For me, it boils down to the following:
- Atomic repository commits. I can't tell you how sick and tired I am of checking out in the middle of someone else's commit and having the code fail to compile.
- Moving of files. That's right. svn mv will move your file for you and keep all the file's history. If you do a timestamp checkout when the file was its original filename, you'll get the original filename. If you do a checkout of the head, you'll get the new filename. It just works. You can move files and directories that way. Refactoring is a breeze.
But, seriously man, it depends on what your requirements are."Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent