[almost OT] version control - Page 2

[almost OT] version control

Discuss the source code and development of Spring Engine in general from a technical point of view. Patches go here too.

Moderator: Moderators

User avatar
Tim Blokdijk
Posts: 1242
Joined: 29 May 2005, 11:18

Post by Tim Blokdijk »

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.
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Post by AF »

I think Id rather have the experienced developer, but the vast majority of the time for every experienced develoepr you get 20 noob ones which can be valuable under different circumstances.
User avatar
jcnossen
Former Engine Dev
Posts: 2440
Joined: 05 Jun 2005, 19:13

Post by jcnossen »

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.
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.

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.
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Post by Tobi »

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.
imbaczek
Posts: 3629
Joined: 22 Aug 2006, 16:19

Post by imbaczek »

bzr barfed at the dump on my machine. There's still tailor, but that'll take a while.

Mercurial doesn't seem to have a windows-friendly tool at all. Oh well.
User avatar
Dragon45
Posts: 2883
Joined: 16 Aug 2004, 04:36

Post by Dragon45 »

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.
Kloot
Spring Developer
Posts: 1867
Joined: 08 Oct 2006, 16:58

Post by Kloot »

try 'make install' ;)
imbaczek
Posts: 3629
Joined: 22 Aug 2006, 16:19

Post by imbaczek »

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...
malric
Posts: 521
Joined: 30 Dec 2005, 22:22

Post by malric »

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.
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).

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 ;). So, if you do, please share the results.... - especially what you do not like about the new system. (from what I've seen until now everything that is advartised as being perfect and wonderfull has negative points but if the positive ones outnumber them it is ok...)
User avatar
Tim Blokdijk
Posts: 1242
Joined: 29 May 2005, 11:18

Post by Tim Blokdijk »

Tobi wrote:... Also have you watched the video? ...
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.
Still you guy's explained some things, if we move to another system that has some advantages then I'm fine with it.
User avatar
Dragon45
Posts: 2883
Joined: 16 Aug 2004, 04:36

Post by Dragon45 »

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 :\
imbaczek
Posts: 3629
Joined: 22 Aug 2006, 16:19

Post by imbaczek »

I got around it by trying a simple svn checkout first, accepting the certificate permanently and aborting. After that, all the tools (git, tailor) worked.
User avatar
Dragon45
Posts: 2883
Joined: 16 Aug 2004, 04:36

Post by Dragon45 »

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?
imbaczek
Posts: 3629
Joined: 22 Aug 2006, 16:19

Post by imbaczek »

well, I dunno ^^ maybe I too did clone... don't remember except that it worked. git svn rebase doesn't bug me for any certificate, so it was permanently accepted.
User avatar
BrainDamage
Lobby Developer
Posts: 1164
Joined: 25 Sep 2006, 13:56

Post by BrainDamage »

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 :P

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 :P )

if you're not interested to the whole svn history, you can use

git svn fetch -r #

to checkout for a particular revision
User avatar
jcnossen
Former Engine Dev
Posts: 2440
Joined: 05 Jun 2005, 19:13

Post by jcnossen »

To the person who mentioned cygwin was needed:
There is a mingw based git installer as well:
http://lilypond.org/git/binaries/mingw/
imbaczek
Posts: 3629
Joined: 22 Aug 2006, 16:19

Post by imbaczek »

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?
User avatar
BrainDamage
Lobby Developer
Posts: 1164
Joined: 25 Sep 2006, 13:56

Post by BrainDamage »

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
User avatar
Dragon45
Posts: 2883
Joined: 16 Aug 2004, 04:36

Post by Dragon45 »

i managed to get repos fetchable on my computer over simply using Apache. I'm going to try push-able repos with SSH next - no luck for me using git-daemon though. Anyone get that working?
imbaczek
Posts: 3629
Joined: 22 Aug 2006, 16:19

Post by imbaczek »

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)
Post Reply

Return to “Engine”