# Information on a Git or Mercury versioned Ports System



## jrd1 (Mar 6, 2014)

Hello all,


Having done some searching on this issue for some time now, and haven discovered no definitive answer, I figured that this would be the best place to ask this question.

I, like most of you use prefer to use the ports system when installing a particular application. Lately, I have been doing a bit of development work in ports using the Porter's Handbook, and using subversion to supply and update my ports codebase. However, thinking about it, and not meaning or wanting to start a flame war, but: is there a particular reason why subversion and not git or mercury (hg) is used as a source manager for the system? 

As I understand it, CVS was the previous version manager system which was superseded by subversion. But, given the merits of both `git` and `hg` over `svn` - most particularly, improved branching and merging - I also had to ask if anyone knew if or when (if possible) FreeBSD was planning to transition to either of these systems in the future and if so, when may that occur - if at all?

Could anyone shed any light on this, please? I would appreciate any insight that anyone could offer.

Thanks!


----------



## SirDice (Mar 6, 2014)

There's a nice explanation here: https://wiki.freebsd.org/VCSWhy


----------



## jrd1 (Mar 6, 2014)

SirDice said:
			
		

> There's a nice explanation here: https://wiki.freebsd.org/VCSWhy



Thank you, very much @SirDice! That was extremely helpful - quite insightful!

If I gather the contents of the document correctly, it seems that the main reasons are (aside from the technical aspects of `git` and `hg` cited in the article):


That to apply `git` or `hg` to the source tree would require massive amounts of decoupling and rearranging (very time consuming and resource intensive). This contradicts the emergent design philosophy of FreeBSD of having one core pool of code that works instead of a split, modular model.
Since `git` tracks the entire tree (not a portion of it like `svn`), that means you download the entire tree and not a part.
`svn` is Apache/BSD licensed (huge pro).

Or, succinctly: `git` was designed with Linux in mind, while in FreeBSD's case, its design and philosophy is more suited to one utilizing and centered around the merits of `svn`.

Thanks again!


----------

