[almost OT] version control
Moderator: Moderators
- Tim Blokdijk
- Posts: 1242
- Joined: 29 May 2005, 11:18
I'm actually willing to take your word for it but I don't quite see how it's making things more easy. I do see a large overhead with having to page everybody about changes I made and that everybody has to merge my changes in there local branches. And visa versa.
As I see it a distributed system is actually only good for something like the Kernel where one benevolent dictator is the maintainer of the central code reposetory. e.g. his 'personal' branch. And a centralized system like svn is better for a more equal system where everybody is responsible for the central reposetory.
I also don't see how the svn commit access thing is a "problem" in itself, I suspect that the underling problems would just pop up at another place in the development process.
Now I don't say distributed is a bad idea but I do think I still have to wrap my head around it as I don't quite see the big advantage, I do see disadvantages.
As I see it a distributed system is actually only good for something like the Kernel where one benevolent dictator is the maintainer of the central code reposetory. e.g. his 'personal' branch. And a centralized system like svn is better for a more equal system where everybody is responsible for the central reposetory.
I also don't see how the svn commit access thing is a "problem" in itself, I suspect that the underling problems would just pop up at another place in the development process.
Now I don't say distributed is a bad idea but I do think I still have to wrap my head around it as I don't quite see the big advantage, I do see disadvantages.
If I understand the features correctly, a distributed vcs provides what a centralized vcs does, and more. You can still have a main repository and have everyone commit into that, exactly the same as when using svn. It's just that your local modifications are not just modifications but a branch of its own, with all the advantages of it.As I see it a distributed system is actually only good for something like the Kernel where one benevolent dictator is the maintainer of the central code reposetory. e.g. his 'personal' branch. And a centralized system like svn is better for a more equal system where everybody is responsible for the central reposetory.
Bazaar for example, has a 'push' command. This command allows people to merge their branches into a central repository, basically the same as svn commit.
Yeah, we used that when I used bzr first: something like a config setting or commit hook so it automatically pushed commits to our local main branch to the central repository.
Tim: I can imagine for e.g. the website SVN may be sufficient. There are lots of projects where the sourcecode switches VCS but the website just keeps being run from CVS/SVN because there isn't really a need to migrate it.
Also have you watched the video? It convinced me commit access is not a good thing, since you are artificially saying this and that person are better then the other persons, so they may use cool tools and use branches, and the others should just mess with patches, or get in public about their plans (to ask for commit access, as genixpro did) if they wish to develop in a branch. With SVN, if someone wants to stay anonymous for a while AND wants to work on his hidden secret feature in a branch, this is impossible.
With a distributed system however, everyone can branch, even someone you don't know yet, and once they upload a mirror of their repository somewhere (compare with: upload a patch) we could just pull it in and merge (compare with: apply patch). Even if you still use a centralized repository for a small group of people (which is possible using a distributed VCS), you still don't deny others access to the technical benefits of a good VCS just because they did not make any code for this project yet.
Oh, and another thing that occurred to me: it doesn't seem too hard to me to maintain SVN too for a while in case of a transition. After all, SVN would just be a single branch, one person could have that in his DVCS repository and merge the SVN branch with the master branch (and commit the master to SVN) every now and then.
Tim: I can imagine for e.g. the website SVN may be sufficient. There are lots of projects where the sourcecode switches VCS but the website just keeps being run from CVS/SVN because there isn't really a need to migrate it.
Also have you watched the video? It convinced me commit access is not a good thing, since you are artificially saying this and that person are better then the other persons, so they may use cool tools and use branches, and the others should just mess with patches, or get in public about their plans (to ask for commit access, as genixpro did) if they wish to develop in a branch. With SVN, if someone wants to stay anonymous for a while AND wants to work on his hidden secret feature in a branch, this is impossible.
With a distributed system however, everyone can branch, even someone you don't know yet, and once they upload a mirror of their repository somewhere (compare with: upload a patch) we could just pull it in and merge (compare with: apply patch). Even if you still use a centralized repository for a small group of people (which is possible using a distributed VCS), you still don't deny others access to the technical benefits of a good VCS just because they did not make any code for this project yet.
Oh, and another thing that occurred to me: it doesn't seem too hard to me to maintain SVN too for a while in case of a transition. After all, SVN would just be a single branch, one person could have that in his DVCS repository and merge the SVN branch with the master branch (and commit the master to SVN) every now and then.
using git. I think im in love.
question: i have the git source in a git repo; i "make" it and everything compiles fine. I then cute-paste the .exes into my usr/local/bin dir so that i can use the latest vers at terminal
however is there a more elegant unixy-way of doing this? im assuming something in the makefile is to change, but im not entirely sure.
i'll try importing the spring src with git's conversion tools later today.
question: i have the git source in a git repo; i "make" it and everything compiles fine. I then cute-paste the .exes into my usr/local/bin dir so that i can use the latest vers at terminal
however is there a more elegant unixy-way of doing this? im assuming something in the makefile is to change, but im not entirely sure.
i'll try importing the spring src with git's conversion tools later today.
make install if compiling from source, but the best way is to use your distribution packages.
of course, most distros lag, so if you want to be on the cutting edge, compiling for your own is the way.
BTW I'm testing git on windows and it works quite well. I mean, no crashes, most needed features just work...
of course, most distros lag, so if you want to be on the cutting edge, compiling for your own is the way.
BTW I'm testing git on windows and it works quite well. I mean, no crashes, most needed features just work...
I think this is possible also with svn using 'vendor branches' (which are a concept and not something different than a branch). And it can work ok, in case you do not modify code that is modified by 'the main branch'. And I would be really curious how git can do a merge in case everybody is modifying the same line (I said one line just for the sake of the example).Tobi wrote:Also have you watched the video? It convinced me commit access is not a good thing, since you are artificially saying this and that person are better then the other persons, so they may use cool tools and use branches, and the others should just mess with patches, or get in public about their plans (to ask for commit access, as genixpro did) if they wish to develop in a branch. With SVN, if someone wants to stay anonymous for a while AND wants to work on his hidden secret feature in a branch, this is impossible.
With a distributed system however, everyone can branch, even someone you don't know yet, and once they upload a mirror of their repository somewhere (compare with: upload a patch) we could just pull it in and merge (compare with: apply patch). Even if you still use a centralized repository for a small group of people (which is possible using a distributed VCS), you still don't deny others access to the technical benefits of a good VCS just because they did not make any code for this project yet.
But I do understand that maybes it 'automates' the process more nicely than svn does with vendor branches. (when I did vendor branches merging I had to look for the options each time, because I didn't do that on a daily basis)
Anyhow I think it would be an interesting experience if you decide to switch

- Tim Blokdijk
- Posts: 1242
- Joined: 29 May 2005, 11:18
I did, but Linus is not such a good speaker, he is comparing his software with other software for his use case and then flame you for being stupid if you don't use his software. I mean I know svn is not perfect for Spring but he did not explain to me why git would be better. My main problem with svn is that we can't do map development with it as it won't allow large binary source files. This issue seems not to be on the radar of people like Linus.Tobi wrote:... Also have you watched the video? ...
Still you guy's explained some things, if we move to another system that has some advantages then I'm fine with it.
git question: I try to connect to spring's subversion repo using git-svnimport (to convert the repo) and it keeps saying that the certificate isnt valid.
I looked around and found that I needed a GIT_SSL_NO_VERIFY environment variable set - so i did "export GIT_SSL_NO_VERIFY=1", and it didn't work - then i tried "expot GIT_SSL_NO_VERIFY=TRUE" and it didnt work either (same error messages both times).
im stumped i guess, any advice, imbac? im sure im diong something really dumb wrong :\
I looked around and found that I needed a GIT_SSL_NO_VERIFY environment variable set - so i did "export GIT_SSL_NO_VERIFY=1", and it didn't work - then i tried "expot GIT_SSL_NO_VERIFY=TRUE" and it didnt work either (same error messages both times).
im stumped i guess, any advice, imbac? im sure im diong something really dumb wrong :\
I did the svn checkout-and-abort (in my wisdom i only aborted after i had download 1.6 gigs of crap off the server) and then tried git-svnimport... over and over... different options, different folders, different settings.. ntohing worked
but then i found somewhere that mentioned git svn clone <url> - and it worked!
so what's the difference between the two?
but then i found somewhere that mentioned git svn clone <url> - and it worked!
so what's the difference between the two?
- BrainDamage
- Lobby Developer
- Posts: 1164
- Joined: 25 Sep 2006, 13:56
i might be mistaken, but the git clone works only when the svn repo contains also git metadata, or at least it didn't work for me when i checked a svn repo i'm sure it didn't have
the steps i had to do were:
git init (actually git init-db due to my not so fresh version)
git svn init svn://path/to/it
git svn fetch
and i imported the whole history of the repo into git (very slow & painful
)
if you're not interested to the whole svn history, you can use
git svn fetch -r #
to checkout for a particular revision

the steps i had to do were:
git init (actually git init-db due to my not so fresh version)
git svn init svn://path/to/it
git svn fetch
and i imported the whole history of the repo into git (very slow & painful

if you're not interested to the whole svn history, you can use
git svn fetch -r #
to checkout for a particular revision
To the person who mentioned cygwin was needed:
There is a mingw based git installer as well:
http://lilypond.org/git/binaries/mingw/
There is a mingw based git installer as well:
http://lilypond.org/git/binaries/mingw/
jc: I'm using the one from here: http://code.google.com/p/msysgit/ - doesn't require cygwin, too. What you found looks like it's easy to install, tho ^^
BD: from what I understand, you need to git svn rebase after a fetch, right?
BD: from what I understand, you need to git svn rebase after a fetch, right?
- BrainDamage
- Lobby Developer
- Posts: 1164
- Joined: 25 Sep 2006, 13:56
with my installed version (1.4.2) it defaults the svn fetch as lastest head by itself
actually, i think it makes sence because as long as you fetch data from a centralized repo, it's reasonable to assume that it contains the head-master version, when you push/pull from other nodes, they could have intermediate or faulty work and thus requires manual define to set the head
i guess you can check for your version using gitk after branching & fetching and see if the head is correctly set
btw the correct command would be
git rebase
without the svn
actually, i think it makes sence because as long as you fetch data from a centralized repo, it's reasonable to assume that it contains the head-master version, when you push/pull from other nodes, they could have intermediate or faulty work and thus requires manual define to set the head
i guess you can check for your version using gitk after branching & fetching and see if the head is correctly set
btw the correct command would be
git rebase
without the svn
can we proceed into dual git<->svn usage please? I have like 5 copies of the source with all different patches and hacks in every one of them. Halp!
(http://msysgit.googlecode.com/files/msysGit-0.5.exe - use this under windows, gitme is still broken)
(http://msysgit.googlecode.com/files/msysGit-0.5.exe - use this under windows, gitme is still broken)