Quantcast

Jump to content

» «
Photo

CodePlex is shutting down... R.I.P. free SVN!

5 replies to this topic
The_GTA
  • The_GTA

    revenclaw

  • Members
  • Joined: 27 Dec 2012
  • Germany
  • Modding Milestone [Magic.TXD]

#1

Posted 3 weeks ago

Hello GTA community,

in my opinion, CodePlex is a great source code hosting website that is 100% free. Unfortunately, Microsoft decided to pull the plug by December 2017.

This means: A huge setback for great, reliable and free SVN/Git hosting.

I have been hosting many great SVN projects there, such as MTA:Eir, Magic.TXD and IDB2PDB symbol inject. You can find me here.

Have you ever considered the advantages of either SVN or Git? Or were you forced to use Git because it is trendy?

SVN advantages:
- async distributed code-base development (svn:externals)
- directory-based source management
- properties can be applied to files and folders

Git advantages:
- created by Linus Torvalds
- powerful control panels on websites
- streamlined to make reproducible builds simple

What are your thoughts?

Parik
  • Parik

    Transform

  • Members
  • Joined: 03 Dec 2012
  • Olympics

#2

Posted 3 weeks ago Edited by Parik, 3 weeks ago.

First Google Code now Codeplex.
GNU Savannah still provides free SVN , but its only for free softwares with no proprietary dependencies.

Spoiler
  • The_GTA likes this

K^2
  • K^2

    Vidi Vici Veni

  • Moderator
  • Joined: 14 Apr 2004
  • United-States
  • Best Poster [Technology / Programming] 2016
    Best Poster [Programming] 2015
    Most Knowledgeable [Web Development/Programming] 2013
    Most Knowledgeable [GTA Series] 2011
    Best Debater 2010

#3

Posted 3 weeks ago

SVN is great until you %$#@ something up. Then you wish you were using Git. I have lost work on SVN because I've reset a repo, forgetting that I've had some modifications, or because a merge went sideways. This just isn't a thing in Git. If you have unstaged changes, you won't be able to rebase or merge over. You'll have to commit or stash. And if you've done absolutely anything to mess up a commit, you can always rewind on history, even if commit was local. I have not once had something go wrong in Git where I wasn't able to rewind from either on branch or stash history.

And don't get me started on branching. I used to work at a studio that used SVN for their main version control. We had the main branch for current state of the common engine, and then branched from it were game branches with various released versions. If I had a live crash I needed to reproduce, I had to get the code from matching branch, and it would take half an hour or more to download each time, because there is no concept of checking out just the changes you need when you have a branchy history. Likewise, merging a bug fix up/down was always a horrible pain. Again, non-issues with Git. You can check out from one branch to another in seconds once you have it fetched. And merging is super easy in any combination.

Seriously, do yourself a favor and learn how to work with Git. The learning curve is significantly steeper, because you have to understand how branches and history actually work in git to make proper use of it. But it's absolutely worth it. Once you understand how to use Git properly, there is absolutely no competition with SVN. The later can't do half of the things you won't be able to live without once you learn Git.

- async distributed code-base development (svn:externals)
- directory-based source management
- properties can be applied to files and folders

- Git submodules.
- Git checks out to a directory, just like SVN. SVN just can't switch branches in-place.
- Properties are tracked in Git.
  • The_GTA likes this

The_GTA
  • The_GTA

    revenclaw

  • Members
  • Joined: 27 Dec 2012
  • Germany
  • Modding Milestone [Magic.TXD]

#4

Posted 3 weeks ago

SVN is great until you %$#@ something up. Then you wish you were using Git. I have lost work on SVN because I've reset a repo, forgetting that I've had some modifications, or because a merge went sideways. This just isn't a thing in Git. If you have unstaged changes, you won't be able to rebase or merge over. You'll have to commit or stash. And if you've done absolutely anything to mess up a commit, you can always rewind on history, even if commit was local. I have not once had something go wrong in Git where I wasn't able to rewind from either on branch or stash history.

Human error is inevitable. You describe that Git protects the repo more tightly. Good point, imo sometimes too much. Usually I work on one big thoroughly tested commit. TortoiseSVN helps synchronizing with remote conflicts. I remember Git tools being more advanced at merging. Rewinding is not my cup of tea.

And don't get me started on branching. I used to work at a studio that used SVN for their main version control. We had the main branch for current state of the common engine, and then branched from it were game branches with various released versions. If I had a live crash I needed to reproduce, I had to get the code from matching branch, and it would take half an hour or more to download each time, because there is no concept of checking out just the changes you need when you have a branchy history. Likewise, merging a bug fix up/down was always a horrible pain. Again, non-issues with Git. You can check out from one branch to another in seconds once you have it fetched. And merging is super easy in any combination.

Git _is_ the better solution here. You see once projects become big like this (multiple versions) then it is great to tightly control every little change. SVN allows too much freedom.

SVN outplays Git in small open-source scenarios. Establish multiple repositories with shared code and link them together checking out HEAD revision. Update a shared repository: need to verify change using commit in each GIT repo, need to verify nothing in SVN repo. Call me lazy but it is great!

Seriously, do yourself a favor and learn how to work with Git. The learning curve is significantly steeper, because you have to understand how branches and history actually work in git to make proper use of it. But it's absolutely worth it. Once you understand how to use Git properly, there is absolutely no competition with SVN. The later can't do half of the things you won't be able to live without once you learn Git.

Pretty sure Git is great. I use it myself if I have no shared, modular code. Appreciate those things like "branches" and "history" too.

I just wish that there were less zealots trying to switch every SVN system to Git. There is no 1:1 conversion for each SVN workflow.

- Git submodules.
- Git checks out to a directory, just like SVN. SVN just can't switch branches in-place.
- Properties are tracked in Git.

- See my rant above; submods do not auto-update to HEAD.
- In Git you cannot add a directory; only the files inside. It is a difference.
- Which are stored in files, right? In SVN it is meta-data invisibly attached to files/folders. Cool concept.

------------------------

Thank you for your civil contribution to the discussion, K^2 :-)

K^2
  • K^2

    Vidi Vici Veni

  • Moderator
  • Joined: 14 Apr 2004
  • United-States
  • Best Poster [Technology / Programming] 2016
    Best Poster [Programming] 2015
    Most Knowledgeable [Web Development/Programming] 2013
    Most Knowledgeable [GTA Series] 2011
    Best Debater 2010

#5

Posted 3 weeks ago

The only advantage of SVN is simplicity in use, which is entirely negated once you get used to Git. Yes, you need to know and be aware of more things to use Git, but once you learn these things for one project, that disadvantage entirely disappears. I've seen projects that use SVN as a separate repo for things like scripts, shaders, various config files maintained by technical artists and junior coders. This sometimes makes sense so that you don't have to teach these people to use Git. But if you have a team of people who know how to use Git, there is no reason not to use Git. And any serious project should consist of people who either know it already or can quickly learn.

Yes, submodules do not auto-update. They shouldn't. Every update to head of a module is potential incompatibility with usage in your code. If you are updating a submodule, there should be a reason for it. You should know what the changes were, and verify that no new conflicts are introduced with your code. Hence the manual updates. You can set up a script that automatically keeps submodules in sync if you want to, but I wouldn't. It seems less like a feature and more like a rake waiting to be stepped on by people who don't know how these systems work.

And yes, git requires a file in a directory, which can be a simple placeholder. This makes sense with how branch-switching works, so I don't mind having to create an empty file if I need to. The properties are maintained on files/directories you modify properties on. Same as they are on the file system. Just like SVN, Git does maintain metadata on files.

The_GTA
  • The_GTA

    revenclaw

  • Members
  • Joined: 27 Dec 2012
  • Germany
  • Modding Milestone [Magic.TXD]

#6

Posted 2 weeks ago

The only advantage of SVN is simplicity in use, which is entirely negated once you get used to Git. Yes, you need to know and be aware of more things to use Git, but once you learn these things for one project, that disadvantage entirely disappears. I've seen projects that use SVN as a separate repo for things like scripts, shaders, various config files maintained by technical artists and junior coders. This sometimes makes sense so that you don't have to teach these people to use Git. But if you have a team of people who know how to use Git, there is no reason not to use Git. And any serious project should consist of people who either know it already or can quickly learn.

Yes, submodules do not auto-update. They shouldn't. Every update to head of a module is potential incompatibility with usage in your code. If you are updating a submodule, there should be a reason for it. You should know what the changes were, and verify that no new conflicts are introduced with your code. Hence the manual updates. You can set up a script that automatically keeps submodules in sync if you want to, but I wouldn't. It seems less like a feature and more like a rake waiting to be stepped on by people who don't know how these systems work.

And yes, git requires a file in a directory, which can be a simple placeholder. This makes sense with how branch-switching works, so I don't mind having to create an empty file if I need to. The properties are maintained on files/directories you modify properties on. Same as they are on the file system. Just like SVN, Git does maintain metadata on files.

It sounds very convincing the way you say it. Starting out with Git seems like a good idea.

SVN is simple on the surface. But once you start getting into the gritty things, like partial check-outs for code sharing, it is really easy to break things. The only way to check-out a Git repository is from it's root and that is good design decision, for simplicity's sake.

If multiple coders work on multiple repositories that are connected using submodules/externals, there is a high chance that communication breaks and they break the API handshakes. Usually breaking changes in API give you a good reason to adapt your codebase in return, for example when listing to HEAD, but I get how it can be annoying. Some devs could be slacking or the dev of externals breaks his codebase too often.

In SVN world you would have a special directory in the codebase (called a 'branch') that you can selectively check-out for a stable thing. Wouldn't that be okay for listening to HEAD?

Having a choice is good!

===========================

After the closure of CodePlex people might be looking for a new source code host, for either SVN or Git. OSDN.net has surpised me a lot. It offers free Git/SVN/Mercurial SCM hosting, gives you webspace with a custom sub-domain, has high-speed SCM connectivity (SVN update reaches 1MB/sec). But the tip of the iceberg: I made a support ticket and the OSDN.net team responded hyper-fast. I'd suggest give them a chance. :)




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users