| From: | "C. Michael Pilato" <cmpilato-AT-collab.net> | |
| To: | Subversion Development <dev-AT-subversion.apache.org> | |
| Subject: | Subversion Vision and Roadmap Proposal | |
| Date: | Fri, 02 Apr 2010 11:28:30 -0400 | |
| Archive-link: | Article, Thread |
Last week, five of Subversion's developers -- myself, Hyrum Wright (who
helped me author this lengthy mail), Greg Stein, Stefan Sperling, and Karl
Fogel ("we", henceforth) -- met in New York City to evaluate Subversion's
current trajectory as a project and to jointly develop suggestions for any
course correction deemed necessary. The unfortunate impetus for the meeting
was feedback from representatives of some very large installations of
Subversion that, from where they sat, the Subversion project was stagnating.
This is a somewhat fair assertion. It's not that the community is or has
ever been in danger of doing nothing. But even when we march in step
towards a goal, we don't do a good job of communicating outwardly about that
fact, leading to the appearance of inactivity. And lately, our ongoing
efforts have been less like a team of folks working in concert towards a
common vision, and more like the individual piddlings common to mature open
source software.
Make no mistake: Subversion is mature open source software. It works well
for open source projects and -- in one of the biggest software coups of the
last decade -- we've found that it's also good enough to supplant other
well-established version control systems, open-source or otherwise, inside
the highly structured walls of the enterprise. Unfortunately, "good enough"
still leaves the enterprise user base frustrated at the most inopportune
times (like, say, when managing branches near releases). And if you judge
success by mindshare, it's now clear the DVCS tools have rendered our "good
enough" somewhat obsolete when it comes to serving many open source
projects, even.
VISION
Subversion has no future as a DVCS tool. Let's just get that out there. At
least two very successful such tools exist already, and to squeeze another
horse into that race would be a poor investment of energy and talent.
What's more, huge classes of users remain categorically opposed to the very
tenets on which the DVCS systems are based. They need centralization. They
need control. They need meaningful path-based authorization. They need
simplicity. In short, they desperately need Subversion. It's this class of
user -- the corporate developer -- that stands to benefit hugely from what
Subversion brings to the party. And it's that class of user which we
believe Subversion should cater to, ideally without ostracizing the open
source volunteers who remain our largest source of development investment.
Corporate developers come in all shapes and sizes, from self-administering
10-person teams to geographically-distributed organizations of thousands of
developers on hundreds of teams serviced by dedicated IT departments.
Subversion can't be all things to all people, but it can be a well-defined
subset of things to most people. It shouldn't sacrifice its trademark
simplicity when growing the features most likely to be used in large-scale
deployments; it shouldn't optimize for the large enterprise in a way that
will alienate the long tail composed of much smaller deployments. By
defining the subset of things Subversion is and those it is not, we
recognize our own boundaries and prevent years of wandering through the
proverbial wilderness of feature creep.
Someone wiser than I once said, "Where there is no vision, the people
perish." So recognizing the benefits that Subversion already offers, and
projecting a bit into the future what we'd like to see Subversion become, we
offer the following vision statement for your review:
Subversion exists to be universally recognized and adopted as an
open-source, centralized version control system characterized by its
reliability as a safe haven for valuable data; the simplicity of its
model and usage; and its ability to support the needs of a wide variety
of users and projects, from individuals to large-scale enterprise
operations.
A shorter, business-card-sized motto (offered as a replacement to the
obsolete "A compelling replacement for CVS") might be: "Enterprise-class
centralized version control for the masses".
ROADMAP
With that vision in mind, we identified a number of high-value improvements
which Subversion should gain in coming releases. Then we took a casual pass
at assigning some technical "plumbing" dependencies for each of these.
Here's what we came up with, in the form "FEATURE: [DEPENDENCY ...]", where
"FS-NG" = major FS backend overhaul, "WC-NG" = WC-NG, and "Ev2" = svn_editor_t:
* Obliterate: FS-NG
* Shelve/Checkpoint: WC-NG
* Repository-dictated Configuration: WC-NG (?)
* Rename Tracking: WC-NG, Ev2, FS-NG (?)
* Improved Merging: WC-NG
* Improved Tree Conflict Handling: WC-NG, Ev2, Rename Tracking
* Enterprise Authentication Mechanisms:
* Forward History Searching: FS-NG (?)
* Log Message Templates: Repository-dictated Configuration
By examining this dependency chain, factoring in the development momentum
which will exist around WC-NG, and admitting that some of the major plumbing
overhauls not currently underway may prove to be just as costly as the WC-NG
work (if not more so), we believe that the following feature roadmap is one
which will serve Subversion users well:
1.7: WC-NG; HTTPv2; 'svn patch'; typical slew of various bug fixes
1.8: repository-dictated configuration; tree conflicts improvements;
WC-NG-enabled stuff (rename tracking, compressed pristines,
shelving/checkpointing, ...)
1.9: Editor v2 (for server->client rename handling improvements)
[...]
2.0: FS-NG (ideally a parallelized task), with some (to-be-identified)
FS-NG enabled features.
That last item is likely to be contentious, so it bears explaining. We
believe that our current two filesystem offerings are stifling innovation.
On the one hand we have the BDB backend which is a breeze to develop for but
is only occasional used; on the other is the far-more-popular FSFS backend
whose fundamental principles so constrain the system as to destroy much hope
of serious design overhaul; and in the middle lies the feature parity
requirement we've been living under thus far which binds Subversion to the
union of the two backends' weaknesses. We confidently assert that to break
system-wide compatibility with a so-called 2.0 release will be Subversion's
great overall detriment, both from the perspective of efficient use of
development energy and in user adoption. So we propose that an
as-yet-fictional Subversion 2.0 be allowed to break compatibility with the
1.x line only in ways which can be mitigated using the RA layer as a
compatibility shim. Additionally, we believe that merely releasing a 2.0
with a new FS backend but without new user-visible features enabled by that
overhaul will be ill-received.
COMMUNITY
We also discussed matters of communication and community. Subversion has
historically had a very tight-knit community of developers, and we've
provided a resource for communicating with users through the various mailing
lists. With the increase in corporate involvement, and the changing roles
(and employers!) of committers, the Subversion ecosystem can at times seems
a bit fractured. To an enterprise manager responsible for thousands of
users, and millions of dollars of investment, and billions of bytes of data,
this fracturing appears as a liability when considering an investment in
Subversion. Most corporations understand the open source nature of
Subversion's development method (indeed, this very thing has driven
Subversion adoption), but they still want a unified face when it comes to
communication, planning, and project feedback.
One proposed solution is a Subversion "planet", to be hosted at a
re-purposed subversion.org. The planet would aggregate feeds from
individual contributors, as well as the various corporate entities
interested in Subversion development. While various commercial interests
(CollabNet, WANdisco, elego, etc.) may compete in some areas, they are all
committed to improving Subversion as a whole. Enterprise users need to see
this unity across Subversion's corporate sponsors, and a communication
stream which interleaves these corporate voices works toward that end.
Whatever the solution, we need a defined plan which we then communicate to
the end users and customers who are deploying Subversion installations.
But communication alone isn't enough. We need to find ways to grow our
developer community itself. Attendance at the recent Subversion Corporation
Annual Members Meeting was low (by design and recommendation, of course),
but a startling realization was made there. When the agenda item for voting
new full committers into membership was on the table, there were no
candidates. Think about that: no new full committers for Subversion in the
past year. This is a bad thing. We need to find a way to embrace and
empower would-be Subversion contributors. Telling them to troll through the
issue tracker looking for bite-sized issues is not the way to do that -- it
communicates "we can't be bothered to mentor you". When somebody wants to
start making contributions, our community must recognize the value of that
contributor and mentor him or her toward full committership, for the good of
that contributor and of the community. Further, our public roadmap needs to
highlight the items that we really wish we could be working on but lack the
manpower to handle. This would provide those looking for ways to accelerate
Subversion's roadmap with some cues for doing that in harmony with the Big
Picture.
SUMMARY
I've covered a lot of ground here, but decisions in this community have
always been and will be made on this mailing list, and they deserve to be
made with as much information as possible. You now know where a small
contingent of developers stand on these issues. I'd like to publicize on
our project website a *community-endorsed* vision and roadmap ASAP, and then
get to the business of moving Subversion forward along those lines.
So what say you?
-- C-Mike, for the NYC conference attendees
--
C. Michael Pilato <cmpilato@collab.net>
CollabNet <> www.collab.net <> Distributed Development On Demand
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 15:16 UTC (Sat) by zorro (subscriber, #45643) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 18:58 UTC (Sat) by fhuberts (subscriber, #64683) [Link]
I switched our site of 50+ developers from TFS to ...... Git!
We looked at SVN and it is, well, old technology.
Git has a massive community and anything that works for projects like the Linux kernel will work for _any_ corporate environment.
It has worked out for use extremely well, even the M$ oriented devs are very very pleased.
I'd say SVN has been overtaken by lessons learned for itself and others :-)
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 19:02 UTC (Sat) by fhuberts (subscriber, #64683) [Link]
TFS is barely better than SourceSafe, which was _the_ worst vcs out there.
We had to endure 1.5 years of hardship under TFS because of a management decision...
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 11:23 UTC (Sun) by nix (subscriber, #2304) [Link]
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 11:54 UTC (Sun) by tialaramex (subscriber, #21167) [Link]
Inadvertently Microsoft actually created a scenario in which Windows developers were less likely to even have source control, because they might try VSS figuring it's the "obvious" choice to go with their other Microsoft tools, and after losing a week's work in one click they give up altogether.
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 20:26 UTC (Sun) by nix (subscriber, #2304) [Link]
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 13:43 UTC (Mon) by sorpigal (subscriber, #36106) [Link]
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 8:07 UTC (Tue) by BlueLightning (subscriber, #38978) [Link]
CSSC
Posted Apr 5, 2010 15:10 UTC (Mon) by cry_regarder (subscriber, #50545) [Link]
It isn't in fedora but I got packages...
Cry
CSSC
Posted Apr 5, 2010 16:32 UTC (Mon) by iabervon (subscriber, #722) [Link]
CSSC
Posted Apr 5, 2010 21:26 UTC (Mon) by marcH (subscriber, #57642) [Link]
ci -t- -l /etc/hosts
and start editing.
CSSC
Posted Apr 7, 2010 17:07 UTC (Wed) by intgr (subscriber, #39733) [Link]
Having to learn yet another tool that works nothing like any other VCS is quite inconvenient.
CSSC
Posted Apr 12, 2010 10:22 UTC (Mon) by marcH (subscriber, #57642) [Link]
It is worth it is because RCS is available in every single Linux distribution: even the oldest ones, even the most stripped-down ones. (Remember that I was answering to someone carrying his CSSC packages around).
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 13:42 UTC (Tue) by leonid (guest, #4891) [Link]
Two things:
1. You are wrong.
2. I am jealous of your corporate experience. :)
Linux kernel environment consists largely of self-motivated, enthusiastic, competent developers. Corporates often hire the rest of the world.
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 17:24 UTC (Tue) by fhuberts (subscriber, #64683) [Link]
maybe, maybe not :-)
> 2. I am jealous of your corporate experience. :)
>
> Linux kernel environment consists largely of self-motivated, enthusiastic, competent developers. Corporates often hire the rest of the world.
I was talking about the mechanics of version control, integrating code, etc.
The rest can be enforced in a process; just as the kernel community has its own process to make it work so wonderfully.
Version control is never just about the tooling. It is so much more, like process, release management, etc.
Good soundbite
Posted Apr 7, 2010 20:28 UTC (Wed) by man_ls (guest, #15091) [Link]
I really like your last sentence. May I quote it? :D
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 18:08 UTC (Tue) by vonbrand (guest, #4458) [Link]
Your comment on Linux development implies that git is somehow only for "genius developers". Yes, it used to be, but it got a major facelift in the 1.5 series, and is rather easy to use now. The current release series is 1.7, so...
Obligatory disclosure: I'm a former RCS user, did never really "get" CVS (or SVN, for that matter). I've been using git in anger since its very beginning, after dabbling a bit with BitKeeper way back then.
A proposed Subversion vision and roadmap
Posted Apr 7, 2010 10:57 UTC (Wed) by leonid (guest, #4891) [Link]
A proposed Subversion vision and roadmap
Posted Apr 7, 2010 16:44 UTC (Wed) by nye (guest, #51576) [Link]
Or do you really mean just that these developers were reticent about using the tools available to them? That makes more sense - laziness is something I can identify with.
A proposed Subversion vision and roadmap
Posted Apr 7, 2010 16:51 UTC (Wed) by fhuberts (subscriber, #64683) [Link]
mostly it is because of the strong drive of people _against_ change. most people are not open to the idea that the way they are doing things is no longer the preferred/most optimal way of doing things.
A proposed Subversion vision and roadmap
Posted Apr 12, 2010 14:02 UTC (Mon) by nye (guest, #51576) [Link]
A proposed Subversion vision and roadmap
Posted Apr 7, 2010 20:16 UTC (Wed) by vonbrand (guest, #4458) [Link]
Every one I've met did "version control" of sorts (keep directories with weekly snapshots, whatever) before they were introduced to VCS. The idea is easy to grasp, the how is quite a bit harder to wrap the mind around... and then you have to learn when to commit a change.
For me, DVCS was (almost) natural when I met BitKeeper for the first time (after using RCS for personal projects, and never getting around to get fond enough of CVS/SVN to go to the rigmarole of installing and using them in earnest).
I've seen no cerebral explosions...
Subversion considered obsolete
Posted Apr 3, 2010 15:31 UTC (Sat) by smurf (subscriber, #17840) [Link]
WRT the 'corporate user': Subversion is unable to separate the steps "fix bug A" and "integrate with bugfixes B C D and E, having been checked in while you've been working on A". Mr. Corporate Manager wants this feature.
Subversion cannot do that unless you create a branch for everything. *Poof* your workflow is now an order of magnitude more complicated than git or hg (which is IMHO even less complicated than SVN, once you let go of the centralized-repo, poisoned-by-CVS mindset.)
Subversion considered obsolete
Posted Apr 3, 2010 18:51 UTC (Sat) by ballombe (subscriber, #9523) [Link]
Subversion considered obsolete
Posted Apr 3, 2010 19:20 UTC (Sat) by cortana (guest, #24596) [Link]
Subversion considered obsolete
Posted Apr 3, 2010 19:28 UTC (Sat) by wahern (subscriber, #37304) [Link]
This isn't feasible with Git. I once let a git-svn clone run--over a LAN--for 2 days straight before giving up. Not just Git's fault, granted, but a problem all the same.
The Git solution is to use sub-modules. Whether this is better or worse is fairly debatable, but it's not practical to shift huge SVN trees over to Git.
Subversion considered obsolete
Posted Apr 3, 2010 21:36 UTC (Sat) by maks (subscriber, #32426) [Link]
git svn is nice when you are stuck for whatever reason with svn and can commit to it and have allmost all power of git.
Subversion considered obsolete
Posted Apr 4, 2010 0:55 UTC (Sun) by jengelh (subscriber, #33263) [Link]
I don't see git at fault, but how SVN is organized/utilized is the bottleneck. If you had to make one HTTP request for every changed file in every revision (the repo reaching approximately 2 million objects this year), you may not be done downloading linux-2.6.git in two days either. You can easily test that.. unpack the packs into separate objects, create the http metadata and let it clone. Then again, you could probably pull it off, given git does not have to calculate any diffs.
Subversion considered obsolete
Posted Apr 4, 2010 3:38 UTC (Sun) by nbd (subscriber, #14393) [Link]
Subversion considered obsolete
Posted Apr 4, 2010 6:59 UTC (Sun) by smurf (subscriber, #17840) [Link]
Importing into git can be _fast_ and is limited (on the git side) by the write speed of your disk, and your CPU's zip and sha computing.
On the other hand, last time I checked git-svn essentially does a HTTP request for every revision it pulls. That's hardly fast under the best circumstances. Sorry to say, I have zero interest in finding out whether this could be sped up.
Subversion considered obsolete
Posted Apr 4, 2010 9:34 UTC (Sun) by epa (subscriber, #39769) [Link]
Subversion considered obsolete
Posted Apr 4, 2010 11:16 UTC (Sun) by peschmae (guest, #32292) [Link]
Secondly the space used by git for storing the entire history is, in most cases, less than the space used by a working copy. i.e. for my linux kernel clone (with complete history going back 2.6.12) currently 400 MB for the .git directory as opposed to 450 MB for the actual checkout. Not really much of an issue in practice
Subversion considered obsolete
Posted Apr 4, 2010 17:25 UTC (Sun) by RCL (guest, #63264) [Link]
SHA calculation is what kills it. As I wrote, I didn't succeed in creating
a 22GB (modest by gamedev standards) repo with git/bzr/hg...
Versioning really-big files
Posted Apr 4, 2010 20:33 UTC (Sun) by smurf (subscriber, #17840) [Link]
The larger problem, however, is that you want a way to carry multiple versions of slowly-changing multi-GB files in your repo -- without paying the storage price of (a compressed version of) the whole blob, each time you check in a single-byte change. Same for network traffic when sending that change to a remote repository.
This is essentially a solved problem (rsync does it all the time) and just needs integration into the VCS-of-the-day. This problem is quite orthogonal to the question of whether said VCS-of-the-day is distributed or central, or whether it is named git or hg or bzr or whatever.
Yes, I know that the SVN people seem to have gotten this one mostly-right ("mostly" because their copy of the original file is not compressed). Hopefully, somebody will do the work for git or hg or whatever. It's not exactly rocket science.
Versioning really-big (binary) files
Posted Apr 6, 2010 18:47 UTC (Tue) by vonbrand (guest, #4458) [Link]
git uses delta compression by default (and has done so for a long time now), so the "huge binary files that change a bit" shouldn't be a problem. Please check with the latest version.
Versioning really-big (binary) files
Posted Apr 6, 2010 23:12 UTC (Tue) by dlang (subscriber, #313) [Link]
even for images and audio, if you were to check them in uncompressed the git delta functionality would work well and diff the files against each other, but if you compress the file (jpeg, mp3, or even png) before checking it in, a small change to the uncompressed data results in a huge change to the compressed data. If it's a lossless compression (i.e. png) then it would be possible to have git uncompress it before checking for differences, but if it's a lossy compression you can't do this.
Versioning really-big (binary) files
Posted Apr 7, 2010 7:53 UTC (Wed) by paulj (subscriber, #341) [Link]
Versioning really-big (binary) files
Posted Apr 12, 2010 1:14 UTC (Mon) by vonbrand (guest, #4458) [Link]
Not really. If the contents needs version control, it should be handled by a VCS. The size or format of the files could be a technical hurdle, sure; but it shouldn't be an excuse for not solving the problem.
Subversion considered obsolete
Posted Apr 4, 2010 20:55 UTC (Sun) by simlo (guest, #10866) [Link]
Where I work, we use subversion (and I use git svn :-). We have scripts which pulls the tar.gz files for various packages in specific versions from a server, unpacks, patches and crosscompiles them to our target. The only thing we have in subversion is the scripts and the files we have changed.
For the Linux kernel we tried to have the full thing in subversion, but it took way too much for subversion, so now we only have a makefile, which clones a git repository, when the source is needed.
Subversion considered obsolete
Posted Apr 5, 2010 3:12 UTC (Mon) by RCL (guest, #63264) [Link]
It's almost like having very large firmware blobs in Linux kernels, much larger than they are currently...
See comments below where I elaborate on this interdependency between code and data in games.
Subversion considered obsolete
Posted Apr 5, 2010 14:00 UTC (Mon) by simlo (guest, #10866) [Link]
On the other hand you can have data like maps and icons, which is also "source code" and belongs in the VCS if you edit them by using some program (some map editor, GIMP or whatever). But the overall system is badly designed if these files are "large". They ought to be seperated into small files, each containing seperate parts of the information and then "compiled" into larger files. This will usually make a more flexible and maintainable system (besides making life easier for the VCS). It is the same with C code: You don't make one big file but smaller ones, seperated by functionality.
Subversion considered obsolete
Posted Apr 5, 2010 3:22 UTC (Mon) by martinfick (subscriber, #4455) [Link]
Subversion considered obsolete
Posted Apr 8, 2010 10:08 UTC (Thu) by epa (subscriber, #39769) [Link]
Subversion considered obsolete
Posted Apr 5, 2010 12:12 UTC (Mon) by peschmae (guest, #32292) [Link]
Looks like you're stuck with perforce :-p
Subversion considered obsolete
Posted Apr 5, 2010 17:21 UTC (Mon) by chad.netzer (subscriber, #4257) [Link]
But yes, in practice, git stores source code repos very compactly, and by doing branch operations in place (rather than using separate directory copies for each "branch"), it uses much less space per client than SVN checkouts for a busy developer. And its also *much* faster for the same reason.
Subversion considered obsolete
Posted Apr 4, 2010 17:19 UTC (Sun) by lacostej (guest, #2760) [Link]
* git-svn taking time is SVN's fault, not git. git svn is a bridge that
will check out the revisions using the svn client, one by one. As said
later in the comments, keep the git-svn clone on the server, done once
people will clone from that one instead.
* from my experience a full git history takes less space than the latest
svn checkout. And you can fully work offline, do branches, etc.
To me, SVN is an outdated technology. Git is harder to learn though and
people can (& do) make mistakes until they grasp properly the DVCS
concepts.
Note: hg is a compelling alternative and some people might want to look at
http://hginit.com/ for introduction
Subversion considered obsolete
Posted Apr 5, 2010 15:57 UTC (Mon) by Msemack (guest, #65001) [Link]
1. Unmergable files (binaries) and file locking. This is big. A DVCS can't handle the output
of our CAD program.
2. Forcing people to keep Local copies of the entire repo falls apart above certain repo
sizes.
Subversion considered obsolete
Posted Apr 5, 2010 17:21 UTC (Mon) by iabervon (subscriber, #722) [Link]
Also, a DVCS could, in theory, know where to get all the big uninteresting files instead of actually storing them on the client. That is, for files that aren't useful to compare aside from identity, it would be perfectly reasonable for the DVCS to store on the client "hash xyz is available at (location)", and only actually get the content when needed. For that matter, a DVCS could store the content of large binary files in bittorrent (or a site-internal equivalent) and beat a centralized distribution point.
So far, we haven't seen any DVCSes that do either of these things, but there's not reason they couldn't, aside from the fact that there aren't developers who want to work on those particular problems. That is, version control programs are written in environments with merging and files that compress well against each other and other versions of the same file; this means that "eating your own dogfood" isn't sufficient to motivate developers of version controls systems to fix these problems, and centralized systems, by and large, tend to just happen to work for these cases by default or with very little design effort.
Subversion considered obsolete
Posted Apr 5, 2010 17:46 UTC (Mon) by Msemack (guest, #65001) [Link]
Subversion considered obsolete
Posted Apr 5, 2010 18:01 UTC (Mon) by iabervon (subscriber, #722) [Link]
Subversion considered obsolete
Posted Apr 6, 2010 19:07 UTC (Tue) by vonbrand (guest, #4458) [Link]
Why all this locking nonsense? You have complete control over your clone of the central repo (as a bonus, nobody sees any dumb experiments you try). Use something like gitolite to provide finer-grained access to a shared repo.
And have a real person as a gatekeeper for changes. Call them QA or something.
Subversion considered obsolete
Posted Apr 6, 2010 20:01 UTC (Tue) by iabervon (subscriber, #722) [Link]
It's only relevant to projects where merge conflicts can't be resolved (and if you get a merge conflict, someone's work has to be thrown away and redone from scratch), where you want the person whose work would be wasted to do something else or take the afternoon off instead of wasting their time, but these are important cases in a number of industries that aren't software development.
Subversion considered obsolete
Posted Apr 7, 2010 1:10 UTC (Wed) by vonbrand (guest, #4458) [Link]
The git way to handle this is to have everybody work in their own area (no "I step on your toes" possible), and merge the finished products when the developer say it is done. As everybody can also freely take versions from anybody, this doesn't restrict work based on not-yet-accepted changes in any way (sanctioning a change as official is an administrative decision, as it should be, not one forced by the tool).
Subversion considered obsolete
Posted Apr 7, 2010 2:13 UTC (Wed) by iabervon (subscriber, #722) [Link]
Subversion considered obsolete
Posted Apr 7, 2010 20:21 UTC (Wed) by vonbrand (guest, #4458) [Link]
OK, but this is a problem that no VCS can solve (because there is no reasonable way to merge separate modifications). Locking doesn't help either, in any case this requires administrative (workflow) coordination between people.
Subversion considered obsolete
Posted Apr 7, 2010 20:32 UTC (Wed) by foom (subscriber, #14868) [Link]
The advisory locking in SVN *is the implementation of* the administrative (workflow) coordination
between people.
Subversion considered obsolete
Posted Apr 6, 2010 19:03 UTC (Tue) by vonbrand (guest, #4458) [Link]
Locking is not needed in git, all changes are atomic by design. Sure, if several people mess around commiting stuff at random into the same repo, caos could ensue (but "lock for a commit" won't help here anyway). A solution is to have a real person as a gatekeeper for changes. Or use something like gitolite to provide finer-grained access to a shared repo.
"Large files can't be handled"? That I don't see where it comes from. Sure, early git versions did handle everything by keeping (compressed) copies of each file contents they came across, but that is long gone now.
Subversion considered obsolete
Posted Apr 6, 2010 23:16 UTC (Tue) by dlang (subscriber, #313) [Link]
git's pack file format uses 32 bit offsets, which limits the largest pack size to ~4G (I believe it uses unsigned 32 bit values, if it's signed values then the limit is 2G) I think that it is always pointing to the beginning of a file, so a file larger than 4G can exist in a pack, but would be the only thing in the pack.
Size limit in git objects?
Posted Apr 7, 2010 1:02 UTC (Wed) by vonbrand (guest, #4458) [Link]
Wrong. From Documentation/tecnical/pack-format.txt for current git (version v1.7.0.4-361-g8b5fe8c):
Observation: length of each object is encoded in a variable length format and is not constrained to 32-bit or anything.
Size limit in git objects?
Posted Apr 7, 2010 3:23 UTC (Wed) by dlang (subscriber, #313) [Link]
so you can have up to 4G in a pack file, plus however much the last object runs off the end of it.
Subversion considered obsolete
Posted Apr 7, 2010 22:56 UTC (Wed) by cmccabe (guest, #60281) [Link]
You can mmap(2) files that are bigger than your memory size.
Of course, if you're on 32-bit, there are some size limitations because of the limited size of virtual memory.
Subversion considered obsolete
Posted Apr 7, 2010 20:21 UTC (Wed) by tialaramex (subscriber, #21167) [Link]
What happens in many proprietary systems, and in subversion if you choose, is that you need a lock to be "authorised" to edit a file, not to commit the change. The procedure looks like:
1 The lockable files start off read-only
2. You _tell the VCS_ that you want to work on file X
2.1 The VCS contacts a central server, asking for a lock on file X
2.2 If that's granted file X is set read-write
2.3 Optionally your program for working on file X is started automatically
3. You do some work, maybe over the course of hours or even days
4. You save and check in the new file X, optionally releasing the lock
The VCS can't strictly _enforce_ the locking rule, of course you could copy file X, or set it read-write manually, then start working on it, and only try to take the lock a day later. But, when you complain to your boss that someone changed file X after you'd started work on it, of course he won't have much sympathy.
The locking model has lots of problems, but some people have convincing arguments for why its appropriate to their problem. The only options for Git are (1) not appealing to those users (2) persuading them all that they're wrong or (3) offering some weird hybrid mode where there can be a central locking server for a subset of files. If you accept that (1) could be the right option, then the continued existence of Subversion is justified for those users already.
Subversion considered obsolete
Posted Apr 8, 2010 20:56 UTC (Thu) by vonbrand (guest, #4458) [Link]
In centralized systems (especially those that don't handle merges decently) this is really the only way to work, true. (RCS works this way, for example). But with decentralized systems with reasonable branching and merging this isn't required. And locking a file doesn't really make sense in a decentralized system (there is no single "file" to lock!), so it is left out of the tool. If the workflow requires some sort of "don't touch some file(s) for a while" synchronization, it has to be handled outside.
I believe this requirement's importance is way overblown. How many projects do you work on, where it is really a requirement (not an artifact of shortcommings in integrating changes by the tool)?
Subversion considered obsolete
Posted Apr 8, 2010 21:56 UTC (Thu) by foom (subscriber, #14868) [Link]
Being a distributed VCS doesn't make this workflow management tool any less necessary. And it's convenient to have it integrated with the VCS so that "status" shows the status, and "commit" checks and releases the locks, and so on.
You might want to read this so you can know what you're talking about:
http://svnbook.red-bean.com/en/1.5/svn.advanced.locking.html
I wish I didn't have to keep defending subversion: git is really nice. But come on people, just be honest about what it can't do, and stop claiming those things are unnecessary!
Subversion considered obsolete
Posted Apr 9, 2010 16:07 UTC (Fri) by vonbrand (guest, #4458) [Link]
As I said, the workflow might require it. But in a decentralized environment there simply can't be any "common rallying point" for all developers handled by the DVCS, so the tool itself can't help you here.
Not by a design flaw, but by fundamental reasons: The "locking" idea only makes sense if there is one master copy shared by all.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 15:45 UTC (Sat) by mosfet (guest, #45339) [Link]
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 17:28 UTC (Sun) by RCL (guest, #63264) [Link]
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 16:22 UTC (Mon) by elanthis (guest, #6227) [Link]
Intersection and union
Posted Apr 7, 2010 21:02 UTC (Wed) by man_ls (guest, #15091) [Link]
Who besides corporate suits still need the "security theater" that centralized-only VCS offer?Essentially two groups: bad developers and ignorant developers. There is a large intersection there, but also two big disjoint groups.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 15:50 UTC (Sat) by stumbles (guest, #8796) [Link]
I'm just curious how git cannot perform, offer or other wise do these things;
1. They need centralization.2. They need control.
3. They need meaningful path-based authorization.
4 They need simplicity.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 16:21 UTC (Sat) by xnox (subscriber, #63320) [Link]
So if you want or need "coorporate theatre" and still have no pain DVCS merging choose bzr.
I'm very confused which 2 DVCS were picked? I guess git but I can't place the other one bzr, hg,
darcs, monotone?
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 16:32 UTC (Sat) by bboissin (subscriber, #29506) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 16:38 UTC (Sat) by cowsandmilk (guest, #55475) [Link]
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 15:22 UTC (Mon) by bronson (subscriber, #4806) [Link]
Judging by the icons on http://bazaar.canonical.com/en/ it looks like MySQL and GNU Emacs are the biggest bzr projects, but they're miniscule by KDE/Gnome/Moz/etc standards.
Does bzr have a win that's not shown in those icons?
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 16:20 UTC (Mon) by csenger (guest, #65002) [Link]
> The Launchpad source tree is 150MB, full history is 280MB.
> That's tiny!!
Launchpad with bzr as a deployment is more interesting than the size of the source code of launchpad itself. It runs (taken from their frontpage) more than 17.000 projects, so there are many bzr users.
> Judging by the icons on http://bazaar.canonical.com/en/ it
> looks like MySQL and GNU Emacs are the biggest bzr projects,
> but they're miniscule by KDE/Gnome/Moz/etc standards.
I guess the biggest project is Ubuntu, but I'm sure they do not use one shared repository.
> Does bzr have a win that's not shown in those icons?
They are nice guys who behave friendly.
..Carsten
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 20:12 UTC (Tue) by vonbrand (guest, #4458) [Link]
How many projects are the on repo.or.cz, gitorius, github, codaset, under git at Sourceforge and similar sites? Just github claims some 150,000 public repositories! This surely dwarfs any bzr stuff on Launchpad...
A proposed Subversion vision and roadmap
Posted Apr 8, 2010 8:28 UTC (Thu) by csenger (guest, #65002) [Link]
That wasn't the question, and I'm not talking about X having the most users or Y having the hugest deployment. The root of this discussion was the question what may be the second mentioned dvcs. I'm sure it's mercurial, but it's important to see that bzr nonetheless has a big userbase.
> This surely dwarfs any bzr stuff on Launchpad...
Funny to see that always someone needs to state that he has the biggest.
We can all hope that svn won't dwarf anything else with it's again bigger userbase ;)
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 19:18 UTC (Tue) by vonbrand (guest, #4458) [Link]
If you have the right access to the repo, you can falsify history. Hell, you can create any history you want. A centralized system is more dangerous, as it is a single point of failure here.
With a bit of massage to git (see the ProGit book, and in particular gitolite) you can restrict who can rewrite what history, so this is long not an issue anymore.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 17:18 UTC (Sat) by RCL (guest, #63264) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 17:26 UTC (Sat) by marcH (subscriber, #57642) [Link]
I blame the index
http://osteele.com/archives/2008/05/my-git-workflow
But nothing else. Or is there?
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 17:29 UTC (Sat) by Kit (guest, #55925) [Link]
Probably the most complex aspect of git I've found is that the official tutorial I used (primarily as a cheat sheet to help me remember the commands) seemed to keep moving locations on the kernel.org server.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 19:29 UTC (Sat) by fperrin (guest, #61941) [Link]
mkdir SVN && svnadmin create SVN && svn co SVN .
svn add *.c
Yes, that's more work than git init && git add *.c, but "much harder" ?
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 21:37 UTC (Sat) by heipei (guest, #63821) [Link]
1. Download some non-versioned source from a website, untar it into dir
2. cd dir; git init; git add .; git commit -m 'initial'
3. work, hack, commit, etc
4. decide that I don't want the history and just rm -rf .git (or the whole dir)
The point is that you don't have two locations for one tiny thing (a repo and a working copy). Also it
works in-place, whereas you have to create the repo with SVN, then checkout the _empty_ repo into
another dir, and then manually copy your files there to add and commit them. Still sounds equally
simple?
By the way, if you just want to keep track of very simple changes to a pristine codebase, you can
omit the "commit" in step 2. and just diff against the index. Another tiny thing: Your example
doesn't work (for me), since SVN is too stupid to recognize files without file:/// prepended.
Offtopic svn tricks (was: A proposed Subversion vision and roadmap)
Posted Apr 4, 2010 1:24 UTC (Sun) by cesarb (subscriber, #6266) [Link]
Offtopic svn tricks (was: A proposed Subversion vision and roadmap)
Posted Apr 4, 2010 7:35 UTC (Sun) by fperrin (guest, #61941) [Link]
Or even simpler, as I did in my exemple, just "svn co file:///$PWD/SVN ." while being in the
directory where you just untar'd the original source. (Or use emacs and `vc-create-repo'.)
heipei:
>Another tiny thing: Your example doesn't work (for me), since SVN is too stupid to
> recognize files without file:/// prepended.
Yep, I forgot about that. As I did above, replace the checkout step with "svn co file:///$PWD/SVN ."
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 22:06 UTC (Sat) by fuhchee (guest, #40059) [Link]
OK, then how about building (yet another) simple front-end for git?
It does a great job on the back end. If the front end is not simple
enough, build/extend just that.
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 15:28 UTC (Sun) by drag (subscriber, #31333) [Link]
I have had zero experencies with source code control and I found Git much easier to use then anything else. I've tried SVN and CVS in the past, but they were just too difficult.
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 4:32 UTC (Mon) by Kit (guest, #55925) [Link]
This was exactly my experience. The (crappy) documentation I could find for SVN (I didn't bother with CVS, since it'd already been supplanted by SVN for a while by then) assumed I'd be using SSH or Apache to connect to the repository, and I found the SSH setup to be horribly ugly for a purely local workflow (I didn't even care to bother with Apache, that seemed a bit silly to me).
> boom, boom, and boom. Done.
Those commands are more than enough to get you started on a personal project, and it's fairly simple to pick up the other stuff as your needs expand (I was shocked at how simple branching was... I actually thought I had done it wrong since I'd read so much about how poorly SVN handles it). Plus, being able to make commits even when offline or when you don't want to make them public yet (but you don't want one massive commit containing a crap load of work all over the code base) is easy as hell with git (you just commit and don't push!).
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 20:04 UTC (Sat) by ikm (subscriber, #493) [Link]
Erm, how would you do this in Git exactly? Apart from creating a set of separate repositories, which is not it.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 20:17 UTC (Sat) by engla (guest, #47454) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 20:19 UTC (Sat) by engla (guest, #47454) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 20:24 UTC (Sat) by ikm (subscriber, #493) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 22:10 UTC (Sat) by joey (subscriber, #328) [Link]
git's pre-receive hook can see the old and new revisions, and from that, every change that is being made can be examined. When I was implementing untrusted git commits to ikiwiki, using that to reject pushes that contained any sort of disallowed change was not that hard to do.But this is limited to accepting the whole set of changes, or rejecting everything. Well, I suppose you could have the hook fail and then go commit the subset of changes that were acceptable. In theory. In practice, if the user has made many changes, their whole push could fail due to any change the hook dislikes, and they would then most likely need to rewrite their history to get a clean set of changes that the hook accepts.
There is another infelicity if the user pushes using git-daemon. (Ie, a purely anonymous push.) The daemon uses a protocol that did not, last I checked, allow any error messages printed by the hook to be displayed to the user. So it can be hard to tell why your push was rejected.
Sorry for the TMI.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 22:14 UTC (Sat) by ikm (subscriber, #493) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 22:13 UTC (Sat) by engla (guest, #47454) [Link]
Selective read access
Posted Apr 4, 2010 7:05 UTC (Sun) by smurf (subscriber, #17840) [Link]
Granted that linking the stuff together via submodules could be easier, but then setting up a SVN repo to do the path-based stuff isn't exactly child's play either.
Selective read access
Posted Apr 4, 2010 7:36 UTC (Sun) by ikm (subscriber, #493) [Link]
It's not the same thing. When you have just one repository, a lot of things are simpler, like e.g. tagging, browsing history etc. When you have multiple repositories, you have to repeat each operation for each of them. Or, imagine e.g. you had your repository for some time, and then suddenly you need to grant read/write access to just a part of it to someone. With svn, this is simple. With git, well, impossible.
> setting up a SVN repo to do the path-based stuff isn't exactly child's play either
I disagree. Actually, it is.
p.s. I don't understand the need to defend GIT. Yes, it's awesome, and no, it's not universal. Why not just accept that?
Selective read access
Posted Apr 4, 2010 8:30 UTC (Sun) by smurf (subscriber, #17840) [Link]
My real rationale for writing here is that I _really_ dislike non-distributed VC systems, for the simple reason that I can't do my own version-controlled changes without either asking for commit access or re-importing the stuff into my own VCS. "git svn" to the rescue
Granted that giving partial r/w access to somebody after the fact may not be particularly easy with git, but give me a few hours and I'll write a script to convert a subtree into a git submodule, with a copy of the relevant part of the commit history. Problem (mostly) solved.
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 19:27 UTC (Sun) by engla (guest, #47454) [Link]
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 17:38 UTC (Mon) by iabervon (subscriber, #722) [Link]
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 1:13 UTC (Sun) by jengelh (subscriber, #33263) [Link]
Git has it. (Look what kernel.org is to us :-)
>2. They need control.
With git you have total control as a maintainer. So much control that you can reject an entire pull request just because one single file has a whitespace error. Or put more realistically: nothing goes into your repository without your consent. That's control.
>3. They need meaningful path-based authorization.
Path-based authorization is a hack for a management flaw (throwing projects together into a single repository). Suppose the filesystem maintainer only had write rights to fs/ that would most likely suck when there's an API change to be made that affects files in mm/. Doing two separate commits would introduce non-compilable commits into a bisect workflow. So people should just actually get together and actually talk about their changes and not just commit in the hope that it will be ok. That way, Git actually enforces that you get a handful of the important eyeballs that are said to make bugs so shallow (assuming a project that's not done de-facto-solo).
>4 They need simplicity.
I won't call Git outright simple, but the way it works makes it simple in the long run. Annotating (i.e. rebase -i + reorder + edit) commits something that is, at least was, last time I looked, "impossible" (read: infinitely infeasible) in SVN is one example not to miss in Git. SVN repositories seem to generally have a higher percentage of commits that (try to) fix up mistakes things post mortem again and again:
------------------------------------------------------------------------
r729 | graf | 2010-01-25 09:11:36 +0100 (Mon, 25 Jan 2010) | 2 lines
- still not correct.
------------------------------------------------------------------------
r728 | graf | 2010-01-25 08:59:54 +0100 (Mon, 25 Jan 2010) | 1 line
- and again...
------------------------------------------------------------------------
r727 | graf | 2010-01-25 08:57:49 +0100 (Mon, 25 Jan 2010) | 2 lines
- fixed: M_DrawSlider did not print the correct value if the slider's minimum was not 0.
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 9:08 UTC (Mon) by oak (guest, #2786) [Link]
Maybe I wasn't using the correct command/option, but SVN is supposed to be
a CVS replacement and with this (when taking into account importance of
change review before and after commits) and the other SVN shortcomings
(tagging, working with branches) I don't see any real advantage over CVS +
*repository rsync* (used to work around some CVS shortcomings). The
advantages are too minuscule to give reason to switch from CVS to SVN. If
one needs to switch VC, one can as well use something that gives real
advantages (I nowadays use Mercurial, [1] shows overview of its workflow).
[1] http://edong.net/2008v1/docs/dongwoo-Hg-PDF.pdf
PS. Regarding the repository size. There was comparison of sizes a few
years ago. The updated comments at the end of the blog[2] post indicate
other VCs might all be now on par or better in this respect than SVN:
http://blogs.gnome.org/newren/2007/11/24/local-caching-a-...
[2] The generic link to the this great version control blog is:
http://blogs.gnome.org/newren/tag/version-control/
Many of the posts there are several years old, but I think still
interesting.
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 14:10 UTC (Mon) by fw (subscriber, #26023) [Link]
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 23:04 UTC (Tue) by vonbrand (guest, #4458) [Link]
You shouldn't publish rebased branches (or any branches with rewritten history that was seen before). In true Unix tradition, git provides plenty of rope to shoot your feet with...
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 23:14 UTC (Tue) by jengelh (subscriber, #33263) [Link]
A proposed Subversion vision and roadmap
Posted Apr 7, 2010 17:19 UTC (Wed) by cry_regarder (subscriber, #50545) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 15:53 UTC (Sat) by lmb (subscriber, #39048) [Link]
Interesting requirement analysis - but, I think, the wrong conclusion. There is nothing preventing a "centralized" DVCS setup (indeed, most DVCS project have the concept of a "primary" repository), implementing path-based authorization, or using just a "simple" subset of its features.
The opposition comes from fear of change or misunderstandings (namely, the perception that all the DVCS features need to be used or understood in all scenarios), and from clinging to outdated past; it's like the initial resistance to SVN adoption when CVS/SCCS were still around.
path-based authorization?
Posted Apr 3, 2010 17:08 UTC (Sat) by johill (subscriber, #25196) [Link]
???
path-based authorization?
Posted Apr 3, 2010 18:21 UTC (Sat) by rillian (subscriber, #11344) [Link]
At least, that's been my experience. Subversion really does encourage centralization.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 17:31 UTC (Sat) by marcH (subscriber, #57642) [Link]
I think the point you are missing is the following: some workplaces want to make sure developers cannot be creative and cannot even think of any workflow different from the official one.
Workflow
Posted Apr 4, 2010 7:11 UTC (Sun) by smurf (subscriber, #17840) [Link]
Whhy anybody would want its mmany social ramifications, all of which detrimental, is beyond me, but then there's a reason why I'm not a manager. :-P
Workflow
Posted Apr 6, 2010 19:36 UTC (Tue) by marcH (subscriber, #57642) [Link]
Soon enough you give up this strange and doomed experiment of using a centralized tool in a decentralized fashion and you create a branch for the two of you.
Glossary
Posted Apr 3, 2010 17:25 UTC (Sat) by dark (guest, #8483) [Link]
WC-NG: new format for metadata in working copies (checkouts)
svn_editor_t: an API for rearranging ("editing") a filesystem tree
Obliterate: remove a file from the repository, including past revisions
HTTPv2: new protocol for communicating with the central repository server
Glossary
Posted Apr 4, 2010 17:48 UTC (Sun) by phython (subscriber, #3278) [Link]
Glossary
Posted Apr 6, 2010 19:32 UTC (Tue) by vonbrand (guest, #4458) [Link]
"Obliterate" sounds actively evil... and it makes some sort of sense only in a world in which you have separate files with timelines, synchronized only by time. Not my view of a project's history... (but then again, I'm accustomed to git's view).
Obliterate
Posted Apr 6, 2010 22:43 UTC (Tue) by vonbrand (guest, #4458) [Link]
By accident, I just found a way to do exactly this with git... look at removing sensitive data. BTW, this is quite a bit more flexible, as it allows to do arbitrary changes to the file in the history, not just erasing it.
Yes, it is somewhat messy, and requires git-fu (not too much, fortunately); but then again, this is not your everyday, run-of-the-mill operation either. Sure, before-change downstream repos will suffer when updating. Old contents at clients will stay put, but a centralized VCS like SVN isn't that different in this respect.
Glossary
Posted Apr 6, 2010 23:07 UTC (Tue) by neilbrown (subscriber, #359) [Link]
Sure does. I kept thinking of "Obliviate" from the second Harry Potter movie.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 17:38 UTC (Sat) by marcH (subscriber, #57642) [Link]
And no, a directory is not a substitute for a tag:
<http://en.wikipedia.org/wiki/Subversion_%28software%29#Su...>
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 7:47 UTC (Sun) by ikm (subscriber, #493) [Link]
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 12:10 UTC (Sun) by Lionel_Debroux (subscriber, #30014) [Link]
I've been working on two sizeable SVN repositories through git-svn for a couple years, thereby enjoying an efficiently-stored mirror of the whole revision history, fast disconnected mode operation, history rewriting, and other Git features, while not interfering with the choice to keep using the historical SVN repository.
For both of those repositories, the directory trees under /tags and /branches, that Git recreated to match the SVN semantics, take up hundreds of megabytes...
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 18:52 UTC (Sat) by dskoll (subscriber, #1630) [Link]
What's more, huge classes of users remain categorically opposed to the very tenets on which the DVCS systems are based.
Well, time to educate them, then.
They need centralization.
No, they say they do. Or they think they do. But you can have an official "central" repo with any DVCS tool.
They need control. They need meaningful path-based authorization. They need simplicity. In short, they desperately need Subversion.
Meh. FUD.
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 20:42 UTC (Sat) by marduk (subscriber, #3831) [Link]
Pasty: No! You see you're thinking about it all wrong. A motorcyle is more than just a 2-wheeled motor bike. It's a transportation framework. You can easily change and augment it. You can add wings and rudders. A bigger fuel tank. A bigger engine! More storage compartments. Even a side car for additional passengers. You see with a motorcyle you can do anything you can do with an airplane, and more. All you have to do is change your mindset and spend a bit more time and money and you can fly to Chicago on a motorcyle.
Pony: Yeah, or I can just keep my airplane.
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 6:30 UTC (Sun) by flewellyn (subscriber, #5047) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 20:55 UTC (Sat) by MisterIO (guest, #36192) [Link]
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 0:09 UTC (Sun) by dskoll (subscriber, #1630) [Link]
Sometimes it may not even be a technical problem at all; it may just be their taste or it's just that they simply don't need anything more than what they already have.
Absolutely 100% agreed. And if the SVN developers came out and said "Subversion is for those people who like Subversion, or for whom it's adequate, or who don't want to learn another system", great! But spreading FUD by saying you need this, that or the other feature that only SVN has is simply.. FUD.
SVN definitely has its place. While my workplace has switched to git for source-code control, we still use SVN to manage document revisions for non-technical personnel. We found they took a while to wrap their heads around "update" and "commit", and certainly didn't think they'd easily grasp "commit" vs "push", and "fetch"/"pull"/"merge".
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 9:50 UTC (Sun) by epa (subscriber, #39769) [Link]
When we first start using a computer we soon learn that what we see on screen is not permanent
until we 'save' it. Simple version control adds another step, 'commit'.
With a DVCS you must also 'push' to get your changes upstream.
Git adds yet another staging point: the index, where files go
in between save an commit.
Surely all this could be simplified a little?
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 12:25 UTC (Mon) by efexis (guest, #26355) [Link]
A proposed Subversion vision and roadmap
Posted Apr 7, 2010 20:43 UTC (Wed) by vonbrand (guest, #4458) [Link]
One git frontend which tried to hide the index was cogito, currently deprecated. At first, it was confusing to have to consider the index at all. Nowadays I mostly forget about it, but when I need it it is extremely handy.
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 3:39 UTC (Mon) by martinfick (subscriber, #4455) [Link]
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 12:36 UTC (Mon) by efexis (guest, #26355) [Link]
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 22:30 UTC (Sat) by cbcbcb (guest, #10350) [Link]
Advantages of svn in a corporate environment:
1. A central server is required as the one which is stored on fully backed up storage. (yeah yeah, DVCS means there's a copy on everybody's desktop. All in the same building. Real backups are off site)
2. developers can't make a mess of the repository metadata. (On lkml Linus sometimes tells developers that he won't pull because the history is in a mess - but without a single gatekeeper you can't assume that none of the developers with commit rights won't introduce such a mess)
3. Svn authentication is delagated to the owners of the repository, it doesn't require sysadmins to get involved tweaking UNIX groups.
4. Svn provides the means to automatically check commits on the server, so eg all commit messages have a bug tracking number, changes conform to the coding standard, whatever)
5. Svn works properly on windows.
6. Svn can represent empty directories. AFAIK git can't.
It's nothing fundamental, but calling FUD and trying to tell svn users that the svn features they use and git/hg/bzr/etc don't have are useless is a waste of everybody's time. It would be great if somebody could set up the tools to support a corporate environment while also exploiting the advantages of a dvcs
A proposed Subversion vision and roadmap
Posted Apr 3, 2010 23:44 UTC (Sat) by marcH (subscriber, #57642) [Link]
No.
> 2. developers can't make a mess of the repository metadata.
Care to elaborate? I've seen interesting screw-ups of SVN repositories. Inconsiderate developers will screw-up anything. This depends on the workflow not on the tool(s).
> 3. Svn authentication is delagated to the owners of the repository, it doesn't require sysadmins to get involved tweaking UNIX groups.
I am afraid this is your only point. I am not sure how convenient it is to emulate SVN's authentication model with the various DVCS out there.
> 4. Svn provides the means to automatically check commits on the server,
Come on, any system has hooks.
> 5. Svn works properly on windows.
Git is not the only DVCS.
> 6. Svn can represent empty directories. AFAIK git can't.
I'm really impressed. Use a hidden file?
> trying to tell svn users that the svn features they use and git/hg/bzr/etc don't have are useless is a waste of everybody's time.
It would be but I seldom hear this. What I most often hear and read and see is how DVCS offer 99% of SVN's features (and more).
> It would be great if somebody could set up the tools to support a corporate environment while also exploiting the advantages of a dvcs
Agreed.
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 15:34 UTC (Mon) by bronson (subscriber, #4806) [Link]
You said it yourself. Check out your snide reply to #6.
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 6:05 UTC (Sun) by emk (subscriber, #1128) [Link]
1. A central server is required as the one which is stored on fully backed up storage. (yeah yeah, DVCS means there's a copy on everybody's desktop. All in the same building. Real backups are off site)
I've managed offsite backups for both Subversion and git, for repositories in the 320GB range. In my experience, reliable Subversion backups require a script to hotcopy the entire repository, and a fresh whole-repository backup using a full-fledged backup system. This tends to cause minor headaches for incremental backup systems.
Git, in contrast, can do very fast incremental backups via cron and git pull. Even better, it can trivially verify the integrity of a repository by checking all the hash sums.
Now, there are drawbacks to using git for certain kinds of large organizations. Git submodule support, for example, is pretty arcane and requires a moderate level of git-fu. But from a backup perspective, I'd rather use git than subversion any day of the week.
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 9:53 UTC (Sun) by epa (subscriber, #39769) [Link]
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 14:51 UTC (Mon) by Thalience (subscriber, #4217) [Link]
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 17:45 UTC (Mon) by emk (subscriber, #1128) [Link]
svnadmin hotcopy produces an exact copy of the repository. If you're
using fsfs as your storage backend, Subversion never updates the files
that represent each commit, so incremental backups will (1) look at every
file in the new hotcopy, and (2) eventually decide to only back up the new
ones. But for the size repositories we generally used, this whole process
would take about an hour, and bring the Subversion server to a standstill.
git backups require a 1-line cron job that calls 'git fetch', and generally
completes in a few seconds. And git has the ability to rigorously verify the
integrity of a repository.
So given a choice, I'd _much_ rather manage backups for a git server than
a Subversion server. And that's not even counting the fact that git
repositories will generally exist on many development machines, laptops,
etc., and so even the sloppiest of organizations will almost never loose
data.
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 11:43 UTC (Sun) by fperrin (guest, #61941) [Link]
Further advantages :
- SVN works through a HTTP proxy. Last I checked, it was possible to do that in git, but the
instructions were pages long, with non trivial steps on the client side. Other DVCS supported that
through plugins that didn't seem as solid as they could be.
- in SVN, you can checkout just a subdir of the repo. This is (part of) what made the switch of
GNOME to git such a disaster.
- SVN works and is actively used on Windows. According to WP, git uses either cygwin, or a
testing version runnin msys that doesn't seem very stable.
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 20:57 UTC (Sun) by nix (subscriber, #2304) [Link]
(And, honestly, which subdir of which GNOME app do you want to check out?
I can't think of many that are further decomposable. gnome-games,
maybe...)
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 22:14 UTC (Sun) by fperrin (guest, #61941) [Link]
Not being a GNOME contributor, I must say that I got only one side of the story, that is, fpeter's one.
The conversion itself was rather painful, but not because of git per se. However, a lot of translators are from countries were Internet access is quite slow ; they used to checkout only the po subdirs of applications, which they can no longer do. Since in the month before each release, translations represent about half the activity of GNOME's SVN repo, that's quite a problem for GNOME.
In addition, while looking for some references, I just found a recent example were patches are not committed because the committer doesn't have a big enough HDD to checkout the entire module. This wouldn't happen if git was able to checkout only the concerned subdir...
NB: I'm not a SVN fanatic; it's just that I want to counter the opinion of the majority in this discussion which seems to be, with a couple of exceptions, that SVN sucks and git is the alpha and the omega. git is good, SVN has flaws, and vice-versa.
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 0:41 UTC (Mon) by tzafrir (subscriber, #11501) [Link]
For instance, why would you automatically convert the svn:ignore property to a per-directory .gitignore? You can do that (.gitignore can be on every directory, but it can be on every directory above it).
It does not really state the other points that he attempted to show.
And maybe translators just don't need to deal with the version-control system directly. If translators didn't check-out the whole application, they probably never really used it as proper version control: they never really tested their translation with the latest "SVN build". So maybe translators should switch to something like Transifex.
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 16:40 UTC (Tue) by Spudd86 (guest, #51683) [Link]
This seems to be exactly what they are doing. (I read planet Gnome, I vaguely recall some mentions of new tools for translators and workflow improvements for them, I don't recall clearly because I don't particularly care about translation workflows)
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 0:47 UTC (Mon) by cesarb (subscriber, #6266) [Link]
Now it can, with the "sparse checkout" feature in 1.7.0. Combine it with a shallow clone, and you can use a lot less disk space.
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 7:01 UTC (Mon) by shmget (subscriber, #58347) [Link]
If stability was your concern you wouldn't be using Windows to start with.
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 16:36 UTC (Mon) by cortana (guest, #24596) [Link]
Many of us use Windows for our day job, and work on a variety of projects with different version
control systems.
I don't think anyone could honestly state that the Windows port of git is as polished as its
competitors. 'unstable' isn't quite the word I'd use, but some of the labels I have applied to it at
work are not printable here...
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 16:48 UTC (Tue) by Spudd86 (guest, #51683) [Link]
The line ending issue is avoidable by just turning off line ending conversion entirely and using a text editor other than Notepad.
The second is a result of Windows breaking an assumption git makes about file names, and really Windows' case insensitive file names are a pain to deal with in a portable way... you pretty much have to write a crapload of code twice...
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 20:25 UTC (Tue) by vonbrand (guest, #4458) [Link]
What you describe is the mess caused by Windows and Unix using different line ending conventions. It bites you everywhere...
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 23:07 UTC (Tue) by dlang (subscriber, #313) [Link]
you can tell git to change the line ending when a file is checked in, checked out, both, or neither. you can modify this by editing the git config file or useing the git config command.
you can tell git what to do about case sensitivity (although I don't remember the details of how to set this.
A proposed Subversion vision and roadmap
Posted Apr 8, 2010 16:30 UTC (Thu) by Spudd86 (guest, #51683) [Link]
A proposed Subversion vision and roadmap
Posted Apr 8, 2010 18:19 UTC (Thu) by dlang (subscriber, #313) [Link]
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 20:24 UTC (Tue) by vonbrand (guest, #4458) [Link]
AFAIU, the (dumb) HTTP transport for git justgets each object as a separate file, precisely so that no "smart" HTTP tool on the path messes up the communication. It is slow as molasses in winter, but should work everywhere. There isn't any "pages long setup" for this on the server either...
A proposed Subversion vision and roadmap
Posted Apr 8, 2010 2:12 UTC (Thu) by smurf (subscriber, #17840) [Link]
That happens if you intentionally never repack your archive and never update the index file. Not a problem in real life, at least not for initially cloning an archive.
Support large repositories!
Posted Apr 3, 2010 22:35 UTC (Sat) by RCL (guest, #63264) [Link]
E.g. recently I tried creating a git/bzr/hg repo of 22GB of files (it's not that huge, real repositories that hold all the resources needed to build a game, including branches etc are order of magnitude larger... games themselves are several GBs of *compressed* data, don't forget...).
All three failed.
It seems like all git/bzr/hg assume that every file they're dealing with can be directly loaded to memory. That's probably why git spits "malloc returned NULL" errors when asked to add a file which is larger than amount of memory available.
SHA calculation doesn't help them as well... Running "git status" on even relatively small (~1GB) repository becomes uncomfortably slow.
Yet Perforce handles all this easily.
Subversion guys, do something with it (svn can handle several GB-repos, but it is much slower than Perforce) and you'll have an edge over DVCS!
Support large repositories!
Posted Apr 3, 2010 23:20 UTC (Sat) by marcH (subscriber, #57642) [Link]
Support large repositories!
Posted Apr 4, 2010 0:21 UTC (Sun) by brouhaha (subscriber, #1698) [Link]
Once you've told the VCS that a file is binary, it doesn't need to do textual diffs and other text-related operations on it, so there's no obvious reason why the VCS shouldn't be able to handle it in a reasonable manner.
Support large repositories!
Posted Apr 4, 2010 0:28 UTC (Sun) by RCL (guest, #63264) [Link]
Your code should always be synchronized to a particular state of your data it works with. That's so common that I'm suprised that you are asking "why". Here are few reasons why:
1) Using bytecode-compiled scripts which rely on particular layout and sizeof of structures used by C/C++ code and which are usually embedded in data (maps, actors) they operate on.
2) Using binary formats which are tied to particular code which loads/uses them (e.g. if you are making a console game, you don't have resources to have hierarchicaly structured XML-like formats which require additional memory to be loaded and/or cannot be read with a single I/O operation, which is a showstopper if you are streaming directly from DVD - your only realistic option is to load large binary chunks, change a few pointers here and there and that's it).
3) Having the ability to branch/tag a particular state of the whole game so it can be later ported/patched/otherwise updated independently of ongoing development...
etc etc etc
Basically there are as many reasons to have your binary data versioned as there are reasons to have your plaintext data versioned.
Support large repositories!
Posted Apr 4, 2010 7:25 UTC (Sun) by fdr (guest, #57064) [Link]
I do think there's some reason for improvement here, but I must admit: often
the large resources are not terribly coupled to code change (ex: texture
tweaking), and I really, really like the fact that the "log" and "diff"
operators are local and blazing fast for textual artifacts. In the idea
world I could have all my binary blobs, too, however....
I think some UI slickness could be of big help here. It would also be nice
for managing third-party code/dependencies. At the same time, I do imagine
that the right kind of simple script could fetch the resources needed, at
least a conveniently as a P4/SVN install, while not losing access to git's
advantages when manipulating textual artifacts.
Support large repositories!
Posted Apr 4, 2010 8:18 UTC (Sun) by ikm (subscriber, #493) [Link]
mechanism other than a VCS (version control system)? Maybe, like, a hammer, or a shovel? But not a VCS. Definitely not. VCSes are not for versioning data, no, no. Shovels are for that. Dig a hole, snatch your data, mark the place with a rock. And you're done.
Support large repositories!
Posted Apr 5, 2010 21:40 UTC (Mon) by fdr (guest, #57064) [Link]
No need to lean so heavily on the expansion of a TLA to make biting remarks.
It's somewhat silly.
Support large repositories!
Posted Apr 4, 2010 12:04 UTC (Sun) by RCL (guest, #63264) [Link]
And by the way, being "binary" is not the deciding factor. Some
intermediate data formats may be textual (id software even tried that for
production formats, but it failed miserably on consoles). Things don't get
much better if you deal with gigabytes of text files.
Basic problem seems to be time needed to detect the change. Perforce
relies on explicit help from the user by requiring that you "p4 open" some
file before editing it (kind of enforced by setting files to read-only),
but it makes "p4 diff" blazingly fast. SVN tries to guess itself and while
convenient, that slows things down.
Git seems to be ideologically incompatible with the very idea of workflow,
where code is a tiny fragment of overall versioned data. DVCSes get all
the things wrong here: local history (which would require several TBs) is
not needed here, ability to lock the file is missing, ability to detect
changes by scanning the files is detrimental.
There are some ways where DVCS might be more convenient (but only for
coders, which are tiny part of the team), that's why Perforce introduced
"shelving" concept, which seems to get you the main advantage of DVCS into
traditional VCS. Perhaps Subversion should do the same...
Support large repositories!
Posted Apr 5, 2010 11:01 UTC (Mon) by CaddyCorner (guest, #64998) [Link]
Perhaps something that does address the present situation is simply viewing files which have changed their modification date as changed and running a diff index in the background. If it were possible to transparently wrap the binary blob in a paged format then modification dates could be taken on each block/page. This seems to all be at the cost of the VCS trying to not inject itself into the workflow, possibly injection could be optional.
Support large repositories!
Posted Apr 5, 2010 11:31 UTC (Mon) by marcH (subscriber, #57642) [Link]
Now I feel glad not to be a second-class citizen in game development. I would hate to have to deal with tens of gigabytes every time I want to test a one line fix in isolation (just because no cares to modularize these tens of gigabytes...)
> Git seems to be ideologically incompatible with the very idea of workflow, where code is a tiny fragment of overall versioned data.
Yes, because it is designed and optimized for the opposite use case.
> DVCSes get all the things wrong here: local history (which would require several TBs) is not needed here, ability to lock the file is missing, ability to detect changes by scanning the files is detrimental.
These are all desired features for a distributed, "text-optimized" VC.
Thanks for sharing your experience with versioning binaries. It allows you to highlight better than anyone else how optimizing for binaries is different and incompatible from optimizing for text.
Support large repositories!
Posted Apr 8, 2010 16:33 UTC (Thu) by Spudd86 (guest, #51683) [Link]
Support large repositories!
Posted Apr 5, 2010 22:18 UTC (Mon) by marcH (subscriber, #57642) [Link]
That's so common that only perforce seem to handle large binaries well?
I am afraid what is actually common is to generate large binaries from source.
Support large repositories!
Posted Apr 6, 2010 1:19 UTC (Tue) by bronson (subscriber, #4806) [Link]
Besides, when it takes six hours for an optimized compile (this was the 90s), or when the dev tools cost $25,000/seat, then hell yes you check binaries into revision control. Right next to the source code.
Support large repositories!
Posted Apr 6, 2010 9:09 UTC (Tue) by marcH (subscriber, #57642) [Link]
As a matter of fact, I work daily with binaries that I cannot compile myself. Hell no they are not checked in right next to the source code, not to make revision control operations unnecessarily slow down to a crawl.
Support large repositories!
Posted Apr 6, 2010 18:52 UTC (Tue) by avik (guest, #704) [Link]
Support large repositories!
Posted Apr 7, 2010 23:19 UTC (Wed) by cmccabe (guest, #60281) [Link]
Amen to that.
Checking in large blobs of "mystery meat" on the honor system just leads to chaos.
Support large repositories!
Posted Apr 8, 2010 23:13 UTC (Thu) by bronson (subscriber, #4806) [Link]
I notice you guys are ignoring my main points about audio and video files, and cross compilers that cost a lot of dough per seat. OK, fine, let's restrict this discussion to just native compiling. Even in this specialized case, anyone who's kept a distributed ccache up and running might be skeptical of Avi's advice.
Executables are WAY more backward compatible than object files. If you can ensure that everyone is running the exact same minor version of gcc and libraries, ccache would probably work. In most dev shops, where there's a crazy mix of personal favorite Linux distros is plus a bunch of custom-compiled shared libs, I'm pretty sure trying to keep everyone on ccache will cost you a lot more time than it saves. (spoken from my bitter experience of trying to do this in 2006).
Different strokes, right? You will to use whichever technique is best for your shop. That might be ccache, custom scripts pulling binaries off fileservers, or just checking them right into source control. Each one has its place.
Support large repositories!
Posted Apr 30, 2010 18:44 UTC (Fri) by cmccabe (guest, #60281) [Link]
When you check _code_, a skilled coder can look at your change and figure out what it is doing. When you check in a _binary_, there is no obvious way to figure out how it differs from the binary that was previously there. Sure you could disassemble it and run a detailed anaylsis, but realistically, that's not going to happen. Hence, it's "mystery meat."
> I notice you guys are ignoring my main points about audio and
> video files
No, I totally agree with your points regarding audio and video. I hope that git will be extended to support working with these large files more effectively.
> Executables are WAY more backward compatible than object files. If
> you can ensure that everyone is running the exact same minor version
> of gcc and libraries, ccache would probably work. In most dev shops,
> where there's a crazy mix of personal favorite Linux distros is plus
> a bunch of custom-compiled shared libs, I'm pretty sure trying to
> keep everyone on ccache will cost you a lot more time than it saves.
> (spoken from my bitter experience of trying to do this in 2006).
You are doing it wrong. Set up a chroot environment with the proper libraries and compiler. Look up "cross compiling with gcc."
Support large repositories!
Posted Apr 6, 2010 16:53 UTC (Tue) by Spudd86 (guest, #51683) [Link]
Why are you putting the bytecode in the repository if it's coupled to the changes in the C/C++ source it should be built at the same time as all your native code...
Support large repositories!
Posted Apr 4, 2010 10:04 UTC (Sun) by epa (subscriber, #39769) [Link]
Clearly, it's desirable that a VCS support big files. The fact
that some popular ones don't is not reason to dismiss this need.
Support large repositories!
Posted Apr 7, 2010 23:35 UTC (Wed) by cmccabe (guest, #60281) [Link]
So far I've heard two reasons why git is slow on binaries:
1. git normally rescans the entire file during operations like "git diff".
For huge binaries, this gets expensive.
I wonder if git could use the file's mtime to determine whether to scan it for changes. Or does it already?
2. The git format still has some limitations with large files.
Those seem fixable. I wonder if anyone is working on this.
Support large repositories!
Posted Apr 8, 2010 0:31 UTC (Thu) by dlang (subscriber, #313) [Link]
2. This has been discussed, and most of the design work has been done for a couple of different possible solutions.
the first is to store the files separately and just have a reference of how to get the file inside the existing git records. the design work has been mostly done, but nobody has taken the time to code it (GSOC interest anyone ;-)
the second is to modify the pack format to handle larger things. There are people working on this, but since this would be a very invasive set of changes they are trying to anticipate all possible improvements and so it is moving very slowly
Support large repositories!
Posted Apr 8, 2010 16:35 UTC (Thu) by Spudd86 (guest, #51683) [Link]
Support large repositories!
Posted Apr 4, 2010 10:37 UTC (Sun) by ikm (subscriber, #493) [Link]
You can 'diff' and 'patch' binaries. What you can't usually do is 'merge' them. Nevertheless, the need for versioning them exists, even if they aren't mergeable. By the way, to that end SVN supports locking, so that only one person works on a binary at a time. That would be quite weird for a DVCS, but centralized SVN can afford this.
Support large repositories!
Posted Apr 4, 2010 14:43 UTC (Sun) by tialaramex (subscriber, #21167) [Link]
Perhaps though it's wrong to accept the "can't merge" outcome, particularly in the video game context. It's my understanding that video games almost always have someone in the "toolsmith" role. A toolsmith's job could include providing merge for binary formats where that seems like a meaningful operation.
A really simple example is image merge. Given three layered "source images" one the "original", one of which has an improved stone effect layer made by artist A, and one the newly agreed "bad guy logo" in the emboss layer from lead designer B, it ought to be possible to take the changes made by A and by B and merge them to produce a new image which has the nicer stone AND the new logo. This is a mechanical operation (load both images, keep the layers that changed in both, save) but it requires insight into the format of the data.
But even non-mechanical merges are useful. Maybe the two unrelated changes to the intro level can't be merged by a machine, but the level design tool could be tricked out with a feature that can load another level and show it as a copyable ghost on top of the first. That takes merge from a painful and lossy operation worth avoiding at any cost (svn locking) to a relatively mundane occurrence, possible whenever necessary but not to be encouraged.
Support large repositories!
Posted Apr 4, 2010 17:15 UTC (Sun) by RCL (guest, #63264) [Link]
What you are proposing is a nice idea, but it would took an enormous
amount of work to be generally applicable (merge of two skinned characters
with different number of bones, anyone?) and still will be error-prone.
Moreover, merging between two different data sets is not solely a
technical problem, it requires artistic eye because even correctly merged
result of two great-looking changes may still look like shit.
It's so much easier to just lock the files, really!
Support large repositories!
Posted Apr 5, 2010 3:52 UTC (Mon) by martinfick (subscriber, #4455) [Link]
This can very well be true for code also...doesn't meant that a merge tool
to help the process isn't/wouldn't be useful. But, naturally the right way
to support this would be to have your VCS support multiple merge tools via a
plugin mechanism.
Support large repositories!
Posted Apr 5, 2010 9:28 UTC (Mon) by dlang (subscriber, #313) [Link]
Support large repositories!
Posted Apr 6, 2010 20:43 UTC (Tue) by vonbrand (guest, #4458) [Link]
True, as far as it goes. But note that the diff + patch mechanism used to merge aren't infallible either: Consider a repo containing a function named foo and several uses of it. Now on one branch rename foo to bar, and on another introduce further uses of foo. When you merge, even if the merge is successful (i.e., no changed chunks intersect), the result is still inconsistent.
What is really happening is that we use text as a representation for source code, which has a rather richer structure than just "lines" (but not so rich that it makes the above completely useless). We saw that with a student who worked (essentially) on VCS for XML files representing projects. The simple line based diff/merge turned out not to be enough, a somewhat smarter set of operations was needed.
That takes us again to the source of the (otherwise unreasonable) success of Unix: Use text files, not random binary formats unless strictly required. Binary formats are much harder to handle, and each of them will require its own set of operations. To add to the fun, many binary formats include their own (rudimentary) VCS...
Support large repositories!
Posted Apr 4, 2010 20:35 UTC (Sun) by marcH (subscriber, #57642) [Link]
I was not thinking of "diff-the-concept" but of "diff-the-tool".
You can design a tool that will pretend to handle both text and binaries the same way, but it will only pretend to. Inside the box you will actually find two different tools.
Support large repositories!
Posted Apr 4, 2010 21:31 UTC (Sun) by nix (subscriber, #2304) [Link]
Support large repositories!
Posted Apr 5, 2010 11:35 UTC (Mon) by marcH (subscriber, #57642) [Link]
Many binary formats are compressed by default. This usually prevents computing deltas. Are these tools clever enough to transparently uncompress revisions before comparing?
Support large repositories!
Posted Apr 5, 2010 16:24 UTC (Mon) by nix (subscriber, #2304) [Link]
Support large repositories!
Posted Apr 5, 2010 21:47 UTC (Mon) by marcH (subscriber, #57642) [Link]
Every time I tried this, the delta was almost as big as the file itself. Would you have counter-examples?
Support large repositories!
Posted Apr 5, 2010 23:14 UTC (Mon) by nix (subscriber, #2304) [Link]
Support large repositories!
Posted Apr 5, 2010 17:25 UTC (Mon) by dlang (subscriber, #313) [Link]
This has been discussed several times (especially in the context of handling things like .odf files that are compressed XML). What needs to be done to handle formats like this is well understood. Git even has the mechanism to flag files as being of a specific type and call arbatrary tools (external scripts/programs) to handle different file types.
unfortunately, nobody has good, simple examples of this that I am aware of. It's possible, but will take some git-fu to get setup.
Support large repositories!
Posted Apr 6, 2010 17:00 UTC (Tue) by Spudd86 (guest, #51683) [Link]
Support large repositories!
Posted Apr 6, 2010 19:44 UTC (Tue) by vonbrand (guest, #4458) [Link]
Most VCS are indeed designed for human-generated, line-oriented text files.Right, that is their primary use.
At the core of every single VCS sit "diff" and "patch", totally useless for binaries.Wrong. At least, git does not use any kind of "diff" + "patch" at it's core. It (optionally!) uses
xdelta's format to represent differences between similar file contents to get a more compact representation, and that works fine on binaries.
Support large repositories!
Posted Apr 4, 2010 20:07 UTC (Sun) by dlang (subscriber, #313) [Link]
There are two separate problems
1. large files (individual files > 4G or larger than you can reasonably mmap on your system)
this is a real, acknowledged problem that is discussed every 6 months or so on the git list.
2. files that don't diff and therefor make the repository large and therefor slow to copy, etc.
shallow clones (i.e. don't pull all the history) are the work-around for this.
Support large repositories!
Posted Apr 5, 2010 11:36 UTC (Mon) by cortana (guest, #24596) [Link]
Support large repositories!
Posted Apr 5, 2010 17:25 UTC (Mon) by dlang (subscriber, #313) [Link]
Support large repositories!
Posted Apr 5, 2010 19:02 UTC (Mon) by nix (subscriber, #2304) [Link]
Support large repositories!
Posted Apr 5, 2010 19:01 UTC (Mon) by nix (subscriber, #2304) [Link]
Support large repositories!
Posted Apr 5, 2010 23:15 UTC (Mon) by cortana (guest, #24596) [Link]
Support large repositories!
Posted Apr 5, 2010 23:36 UTC (Mon) by dlang (subscriber, #313) [Link]
or are you saying that git needs to provide pre-compiled binaries for 64 bit windows?
Support large repositories!
Posted Apr 6, 2010 8:49 UTC (Tue) by cortana (guest, #24596) [Link]
Support large repositories!
Posted Apr 8, 2010 16:39 UTC (Thu) by Spudd86 (guest, #51683) [Link]
./configure
make
make install
you may or may not have to call configure with --prefix=/usr to get a usable result... but I don't think git has much in the way of dependencies... unless you want things like gitk or git-svn
('course I am assuming you already have MSYS installed...)
Support large repositories!
Posted Apr 8, 2010 16:40 UTC (Thu) by Spudd86 (guest, #51683) [Link]
Support large repositories!
Posted Apr 8, 2010 16:48 UTC (Thu) by cortana (guest, #24596) [Link]
Support large repositories!
Posted Apr 5, 2010 16:49 UTC (Mon) by SEMW (subscriber, #52697) [Link]
For what it's worth, both git-bigfiles (a fork of git) and a Mercurial Bigfiles extension exist. (Whether either of them are any use I have no idea).
Support large repositories!
Posted Apr 5, 2010 17:33 UTC (Mon) by chad.netzer (subscriber, #4257) [Link]
The main clever bit is that "bup" writes packfiles directly, rather than trying to diff-and-pack the large blobs after the fact. This combined with splitting and reconstituting large files automatically, might be a good method for git to natively grow efficient large file support (with built in binary data "deduping").
Support large repositories!
Posted Apr 5, 2010 17:30 UTC (Mon) by tan2 (guest, #42953) [Link]
http://mercurial.selenic.com/wiki/BigfilesExtension
Files larger than a certain size, say 10MB, are stored in an external place. The file names and md5 checksum are stored and revisioned in the repository. An "hg update -r REV" will update files tracked by the normal repository and by the external place to the specified revision.
Support large repositories!
Posted Apr 6, 2010 0:23 UTC (Tue) by tosiabunio (guest, #65014) [Link]
The Witcher game used SVN during its development. The working directory was
20+ GB in size and the whole repository was 200+ GB in size when the game
reached gold.
I have to admit that SVN handled this quite well although the performance was
the biggest problem. 50+ people updating 50K+ files every morning took some
time. Many hours wasted just to finally update a few hundred files. Also many
gigabytes of local space wasted by local copies of each file only needed in
case of revert operation (which could be done from the server anyway).
Support large repositories!
Posted Apr 8, 2010 20:06 UTC (Thu) by jools (guest, #65116) [Link]
Accurev: 22GB workspace in 130,000 files on disk, history going back to 2003,
Perforce: 115GB workspace in 50,000 files on disk, a couple of years of history
Both of these systems are well able to cope with this. For Subversion, as a centralised VCS, this is the competition.
For what it's worth these are the advantages which being centralised can bring IMO:
* nothing but the files locally. at those sizes you don't want to have to have the whole repository locally (optionally would be fine!), or the pristine copy that subversion currently keeps.
* central backup
* central access to all commited code on all branches
Being centralised shouldn't stop the painless branching and merging that DVCS has. I've used Accurev a lot, and IMO it's competitive with Mercurial for this, although the command line is clunkier. (Use the GUI!)
OTOH a DVCS could bring all of the features above. As far as I know right now nothing does :( I'd love to be proved wrong on this!
Those sizes of repository also suggest why some systems e.g. Perforce use the checkout-before-edit system: it greatly reduces the file scanning required, and so speeds up some client operations greatly.
A proposed Subversion vision and roadmap
Posted Apr 4, 2010 19:01 UTC (Sun) by xxiao (guest, #9631) [Link]
What I do is to git init the accurev stuff and work from there, only use accurev when I need 'promote' my patches to the repo on the server.
Indeed
Posted Apr 11, 2010 16:08 UTC (Sun) by man_ls (guest, #15091) [Link]
True, and Accurev can make your really shitty workflow a reality. With other tools you just end up with such a gigantic mess that your workflow will probably have to be simplified (and developers' lives made considerably funnier to live) just to cope; but Accurev makes it all possible. Therefore, it's a good example of how manageability can sometimes become a bad quality.
A proposed Subversion vision and roadmap
Posted Apr 12, 2010 14:37 UTC (Mon) by blottfish (guest, #65212) [Link]
AccuRev indeed will support whatever workflow you desire, as opposed to forcing one or a few upon you. Typically, when you migrate to AccuRev you take the golden opportunity to optimize that process. Even if you stick with the "broken" process in AccuRev, it will be still be far more manageable, as you even indicate yourself by saying you'd be forced to simplify in your "old" tool to avoid the gigantic mess. And you'll have the opportunity to dynamically change your process as you learn how to take advantage of the new power AccuRev provides. Try doing that in a branch and label tool.
I don't mean to take you to task individually, it's just that the premise of "don't use a tool that can help you because you'll invariably screw it up" is defeatist. There are tens of thousands of developers happily using AccuRev, and at an individual contributor level, it doesn't get any simpler. If the higher-level process is screwed up, someone in the organization needs to take responsibility and fix it; fortunately, with AccuRev that's possible...
A proposed Subversion vision and roadmap
Posted Apr 12, 2010 23:40 UTC (Mon) by bronson (subscriber, #4806) [Link]
So it's like serving Chinese, Italian, and burgers all in the same restaurant? Wonderful. Does it also read mail?
A proposed Subversion vision and roadmap
Posted Apr 13, 2010 16:32 UTC (Tue) by blottfish (guest, #65212) [Link]
And your analogy is close, once I offer a minor correction. Instead of serving those cuisines in the same restaurant, AccuRev is indeed like being able to offer those choices, only it's in a Food Court, where all patrons are able to find something that suits their (change) palette, and all can happily co-exist!
Look, every tool isn't going to be for every organization. You choose the one that best fits your needs. My problem was with the premise that the ideal solution was to dumb down the process simply on the assumption that complexity automatically leads to trouble. Which it can, with most tools, if not managed properly. Just not AccuRev...
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 8:07 UTC (Mon) by sitaram (guest, #5959) [Link]
As for stuff like this: "They need centralization. They need control. They need meaningful path-based authorization. They need simplicity.", all I can say is that the implication that you cannot get control, centralisation, and simplicity in a DVCS, is at least 75% bovine excreta.
Path-based auth is interesting. I realise there are cases (like gaming, as some comments said) where git (etc) may be a bad choice due to huge binaries and the need to do full clones.
But I also think that in a typical corporate environment (which they now claim to be their main target market) this is far more likely to be management failure and a "that's the way we've always done it" attitude than any *real* need.
I am the author of a project called gitolite that does an excellent job of branch-level access control for multiple git repositories on a central server. My target "market" is precisely corporate users of git. So far, I have not seen a situation where **read-access** needs to be restricted to portions of a repo (git can't do that anyway). Write-access does often need to be restricted, and gitolite can let you restrict both by branch name (e.g. only the QA lead can push a commit series into the "QA-done" branch) or by filename (e.g., only the team lead can make changes to the Makefile and files in src/very-important-and-critical-module).
While I may not completely agree with Linus' comment on SVN ("most pointless project ever started", or words to that effect), because it at least taught people what doesn't work, I think continuing on a project that started out as CVS done right is no longer an optimal use of anyone's talent or time.
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 22:07 UTC (Mon) by marcH (subscriber, #57642) [Link]
A good reason to use SVN is (was?) maturity. Not sure about now but a few years ago there was already a number of great SVN GUIs while the git CLI was still evolving.
Once SVN is here and does the job, depending on the "real needs" there can be very little reason for a costly migration. Migration cost is not just about finding a silver "svn2git" bullet, it's also about re-writing build scripts, training users, etc.
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 9:07 UTC (Tue) by sitaram (guest, #5959) [Link]
However, that is a far cry from statements like "In short, they desperately need Subversion" :-)
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 19:54 UTC (Tue) by vonbrand (guest, #4458) [Link]
For the individual developer, git svn is a godsend: No need for a coup d'etat on the SVN server, but get git's local advantages.
Just wait; once the SVN lovers die out, you can just anoint a random clone into central repository rôle ;-)
A proposed Subversion vision and roadmap
Posted Apr 5, 2010 11:19 UTC (Mon) by CaddyCorner (guest, #64998) [Link]
Development efforts should shift towards developing a seamless frontend for a DVCS (whichever one). New features can then be developed for the DVCS and then accessed via the frontend. Both the DVCS and svn will get better at the same time and the current and future tools that focus on svn will additionally work for users of the DVCS. This should be SVN 2.0.
Best of luck in whatever direction you choose.
~Cheers
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 23:33 UTC (Tue) by vonbrand (guest, #4458) [Link]
The point is that the DVCS which has the largest user base (roughly correlated with number of developers) will be the one that is in the best position to take this step.
Applauding SVN
Posted Apr 5, 2010 18:09 UTC (Mon) by arjan (subscriber, #36785) [Link]
I have to applaud the SVN guys to have the strength to make the decision to
not play in the DVCS game. I think it's a strength to realize and admit that
you can't play somewhere, not a weakness. SVN will never compete with git in
DVCS, and they know it, and are very open about it.
SVN has its place, even if it's not the place us git lovers will play in.
Realizing that, as a project, and servicing that place rather than trying to
win over the other guys who'll never like it anyway deserves applause not
flamage.
Applauding SVN
Posted Apr 5, 2010 19:06 UTC (Mon) by nix (subscriber, #2304) [Link]
Now? *How* many possibilities have we got, again? Yes, most of these
ultimately derived from arch or bitkeeper or something else distributed,
but I'll bet that the impetus to work on version control at all ultimately
came from the fact that, well, people *worked* on subversion, it's *not*
as hard as everyone has made out, and it doesn't need to be terribly
boring after all, and CVS et al has all these annoying wrinkles which SVN
hasn't quite squashed...
Applauding SVN
Posted Apr 6, 2010 21:28 UTC (Tue) by etrusco (subscriber, #4227) [Link]
Just because cvsnt (cvsnt.org) was poorly named and thus not well known...
Applauding SVN
Posted Apr 6, 2010 22:37 UTC (Tue) by nix (subscriber, #2304) [Link]
Applauding SVN
Posted Apr 5, 2010 21:11 UTC (Mon) by dskoll (subscriber, #1630) [Link]
Let me clarify: I am not blasting SVN or the SVN development team or their goals. I think that SVN is a fine piece of software that has its place.
What I am blasting is the wording of the first paragraph of the "VISION" section, which (IMO) implies that all other VCS systems lack the "centralization, control, meaningful path-based authorization, and simplicity" that SVN supposedly offers. That is simply untrue.
Applauding SVN
Posted Apr 10, 2010 2:31 UTC (Sat) by Nelson (subscriber, #21712) [Link]
Re-read what was said. There are a class of users that need centralization and control, that's who SVN is targeting. They simply aren't going to make it a DVCS and they said that there is a class of users that don't want that..
A proposed Subversion vision and roadmap
Posted Apr 6, 2010 15:42 UTC (Tue) by jrobbins (guest, #65033) [Link]
A proposed Subversion vision and roadmap
Posted Apr 9, 2010 16:19 UTC (Fri) by vonbrand (guest, #4458) [Link]
Improving "perceived speed" is unfortunately not just an exercise in code tuning, the whole architecture of the system is involved (and that is pretty much set in stone for SVN). As long as almost any operation implies a round-trip to the server, it will feel slow for "normal" network connections (or loaded servers).
Subversion in business
Posted Apr 15, 2010 3:00 UTC (Thu) by gregb (guest, #4261) [Link]
This essentially meets the requirements for document management for ISO9000.
ISO9000 auditors are business people, not IT people.
Even if we had a perfect workflow for controlling distribution, generation and modification of documents, it would be still *much* harder to convince an ISO9000 auditor of this if we were using a DVCS.
I think this is the nature of why a number of companies are still very interested in centralised version control.
Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds