Addressing each possible way to deploy Subversion is both impossible and outside the scope of this book. We simply encourage you to evaluate your options using these pages and other sources as your reference material and to plan ahead. Subversion developers have adopted the habit of referring to this latter data storage mechanism as FSFS [41] —a versioned filesystem implementation that uses the native OS filesystem directly—rather than via a database library or some other abstraction layer—to store data.
Table 5. There are advantages and disadvantages to each of these two backend types. Both are reliable enough to trust with your versioned data. But as you can see in Table 5. More flexibility means you have to work a little harder to find ways to deploy it incorrectly. Those reasons—plus the fact that not using Berkeley DB means there's one fewer component in the system—largely explain why today almost everyone uses the FSFS backend when creating new repositories. Fortunately, most programs that access Subversion repositories are blissfully ignorant of which backend data store is in use.
And you aren't even necessarily stuck with your first choice of a data store—in the event that you change your mind later, Subversion provides ways of migrating your repository's data into another repository that uses a different backend data store.
We talk more about that later in this chapter. The following subsections provide a more detailed look at the available backend data store types. When the initial design phase of Subversion was in progress, the developers decided to use Berkeley DB for a variety of reasons, including its open source license, transaction support, reliability, performance, API simplicity, thread safety, support for cursors, and so on. Berkeley DB provides real transaction support—perhaps its most powerful feature.
Multiple processes accessing your Subversion repositories don't have to worry about accidentally clobbering each other's data. The isolation provided by the transaction system is such that for any given operation, the Subversion repository code sees a static view of the database—not a database that is constantly changing at the hand of some other process—and can make decisions based on that view.
If the decision made happens to conflict with what another process is doing, the entire operation is rolled back as though it never happened, and Subversion gracefully retries the operation against a new, updated and yet still static view of the database.
Berkeley DB is also a very reliable database system when properly used. Subversion uses Berkeley DB's logging facilities, which means that the database first writes to on-disk logfiles a description of any modifications it is about to make, and then makes the modification itself. This is to ensure that if anything goes wrong, the database system can back up to a previous checkpoint —a location in the logfiles known not to be corrupt—and replay transactions until the data is restored to a usable state.
But every rose has its thorn, and so we must note some known limitations of Berkeley DB. First, Berkeley DB environments are not portable. You cannot simply copy a Subversion repository that was created on a Unix system onto a Windows system and expect it to work. While much of the Berkeley DB database format is architecture-independent, other aspects of the environment are not. While Berkeley DB promises to behave correctly on network shares that meet a particular set of specifications, [42] most networked filesystem types and appliances do not actually meet those requirements.
And in no case can you allow a BDB-backed repository that resides on a network share to be accessed by multiple clients of that share at once which quite often is the whole point of having the repository live on a network share in the first place. If you attempt to use Berkeley DB on a noncompliant remote filesystem, the results are unpredictable—you may see mysterious errors right away, or it may be months before you discover that your repository database is subtly corrupted.
You should strongly consider using the FSFS data store for repositories that need to live on a network share. Not that a lot of people will use svnserve I suspect, but it is simple. Add a comment. Active Oldest Votes. Improve this answer. Michael Graff Michael Graff 6, 1 1 gold badge 23 23 silver badges 36 36 bronze badges.
I see, but theoretically it's doable. You might want to look at the subversion testimonials page: Subversion Testimonials I think the biggest decision you have to make is to decide whether to go for the Berkely DB backend or the FSFS backend. See svnbook. I'm still quite new to this whole thing, so I'm still learning. At what point in the SVN installation I set the backend? You'd do it when creating the repository with svnadmin create --fs-type — davey.
Davey: So when I create without any options it's just like I do with --fs-type? For further scalability, you can distribute the load using svnsync to create mirrors. In short, I don't think you'll find a scalability problem with it. I have a similar setup, with a smaller repo and performance is never an issue, but we've only got a few users.
No, it doesn't. James Polley James Polley 2, 15 15 silver badges 13 13 bronze badges. So it can actually hold over 10 million users and million repositories?
There are no artificial ie, licensing restrictions preventing you from doing that. Whether it's practical is another matter, and will depend on what resources you can throw at the problem.
It's the practical issue I'm worried about. But let's say I can allocate an endless amount of resource, will it work properly? Compare with Select this menu item to compare the selected node with the specified branch. Browse changes Select this menu item to view changes that match the specified criteria author, time range, and revision. Export Select this menu item to export the contents of the selected repository or folder to the specified destination.
The exported contents are not under version control. Branch or Tag Select this menu item to create a branch or tag of the selected folder. Move or Rename Select this menu item to change name of the selected folder. This website is the central source of information about Subversion and the community which gives it life. Here, you'll find resources that are useful to existing and potential Subversion users and developers alike. Want to read about Subversion's features?
Need to download the latest Subversion release? Perhaps you've thought of a great enhancement and you're wondering how to share the idea with the developers? This site will help you do all that. Who is this site not aimed at? Well, there are many third-party tools which exist as part of the greater Subversion ecosystem, but aren't part of the core project itself.
This site really isn't so much about those projects. The sections below provide a high-level overview of how this website is organized, making reference to the navigation menu you should find on the left-hand side of each page of the website.
The "About Subversion" section of the website is Information Central.
0コメント