FreeBSD src repository is transitioning from Subversion to Git this weekend
lists.freebsd.org
lists.freebsd.org
Anyhow, per https://wiki.freebsd.org/git, looks like GitHub/GitLab will have the new stuff on Tuesday, 2020-12-22T10:00Z; this'll likely require manual actions if you're exporting Git from GitHub. Personally, I'll probably be switching over to exporting directly from FreeBSD.org at that time, because GitHub still doesn't even support IPv6.
freebsd switched to subversion in 2008.
I would guess that git was just too new in 2008.
Git is too different from SVN and CVS.
The real problem was - someone had to work on the switch itself. There is so much tooling that had to be adapted to new version control. Everyone talked, but no one sent any patches. The same reason it is taking so long to switch from Subversion to Git.
I can't find it right now, but I've watched a video that explained CVS -> SVN timeline for FreeBSD. Here is "short" version of it: https://lists.freebsd.org/pipermail/freebsd-current/2008-Jun...
https://leaf.dragonflybsd.org/mailarchive/commits/2008-11/ms...
It would appear that FreeBSD has switched the src repo from CVS into SVN on 2008-05-31.
Sure, Git surely must have improved since 2008, but did it really miss any really important features that have since been implemented back then, or is it just a matter of a much wider acceptance than anything else? It looks like $FreeBSD$ tags are now deprecated, because they aren't supported in Git; I recall these tags have always been the biggest blocker in any VCS considerations for both FreeBSD and NetBSD. TBH, I got the impression that they've never been properly supported by Subversion, either -- you had to install a FreeBSD-specific version of SVN for the tag expansion to work "properly".
I still think SVN is the worst out of all the VCS -- it has all the drawbacks of a centralised Git without many of the benefits, plus none of the benefits of CVS. For example, I wanted to have a local mirror on the history of the tree, which is absurdly easy to do with CVS with rsync -- you can even selectively ignore certain parts of the tree like --exclude "…src/contrib/???…/" --exclude "…src/gnu/…/…" (how do type a star symbol on HN?), but mirroring SVN was so complicated and inflexible that I had simply given up after it had used up way more space than the prior rsync mirror of CVS had ever required, and still wasn't even done. I then decided to entirely bypass SVN by directly switching to an "unofficial" git repo once the export from SVN back to CVS was completely deprecated and deleted at one point.
Significant improvements have been made over the past decade.
DragonFly BSD has a smaller src, but it's been using Git since November 2008, converting away from CVS directly into Git, only a few months after FreeBSD moved from CVS into SVN in May 2008.
It's not like SVN was easy all the time either like some would like you to think.
https://stackoverflow.com/questions/3941291/a-sane-way-to-re...
I agree that is anecdata, yet I've had 10y of extensive experience with subversion and 10y of extensive experience with git (plus a sprinkle of cvs and rcs to boot), both used on FOSS and company contexts. I've regularly teached both to beginners ans seasoned developers alike over the years. I've had the occasion to do things with both that would make many blemish and faint. Dismissing the counterexample with "everyone's different" is a bit hard of a handwave. I stand by my assessment: subversion looks easy on the surface but is fatally flawed down to the most simple actions, to the point of being able to cause data loss.
NB: the git format itself is not licensed, so only the tooling needs to have a "correct" license.
[0] https://github.com/git/git/blob/master/COPYING is GPL2
Replacing GPL'ed Git with a BSD alternative sounds interesting -- if not for anything else, then simply to combat the monoculture -- but assuming that developers are too stupid or stubborn to learn how to use a new VCS, and absolutely MUST have a `got checkout` in place of `git clone`, just because that's how CVS calls it, seems kind of silly.
Of course, you can't achieve world domination if you aren't any different, but having a brand-new `checkout` command -- is that really what's missing from Git?
I'm getting tied of git and disappointed no one wants to get off of it instead more are using it.
Unfortunately as far as I'm concerned it's over. Git has won. It's just way too popular now, other DCVSs can't compete.
Probably nothing; if anything, it's a subset of git.
> or what its purpose is?
To be a saner subset of git with a more usable frontend.
That being said it's not a drop-in replacement and no one uses it, so it's not as if you can enjoy how much better it is very easily.
http://wiki.netbsd.org/github/
https://src.fossil.netbsd.org/
Sadly, somehow the transition to the next VCS has been set to HG, which really makes no sense to me at all; Mercurial is not even BSD licensed, whereas Fossil is; plus, HG is just dead (even Bitbucket discontinued it); the decision to go HG in 2020+ really makes no sense, and I didn't even see anyone argument it; hopefully, it's reversed before it goes through.
https://www.red-bean.com/kfogel/beautiful-code/bc-chapter-02...
Why dont they do a freebsd container runtime based on the jail semantics? They sound much more effective than the linux ones. Ok, the problem would be on how to run linux executables on freebsd.
That problem is mostly solved. Has been for years except for marginal sysctl() calls unlikely in datacenter usage of Linux.
If you have 5+ years investment in docker, the missing, parts here are going to hurt.
Mainly, what's missing is helpful evidence of transition.
E.g. I have a docker image i got from git which works as a one-shot execution chain to run xml2rfc and I got a version for cramdown which worked mostly the same way to do rfc/drafts from markdown. Where's the BastilleBSD equivalent? How do I translate a Dockerfile to a Bastille script?
OS package mismatches will bite you in the ass years down the road if you try to maintain thin-jails.
I manage alot of sites that Management refuses to invest any dev-time to upgrade old Python2.7 infrastructure. Having fat-Jails allows me to keep everything else upgraded.
pf is a fantastic firewall, but the syntax in OpenBSD is different then in FreeBSD.
VNET is worth it's weight in gold. Each jails has it's own network stack. That let's you avoid funky localhost workarounds.
iocage is a great framework for jails management (but it isn't necessary) you can do everything from jail.conf. Personally I prefer it for it's ZFS integration.
My (personal) unbound jail has 95 files in it. The reason it has so many files is because it is simultaneously my 'nsd' jail.
Which is to say, I actually point two different 'jail' commands at the same directory - each with a different IP and command line:
/usr/sbin/jail /jails/dns ns1 1.2.3.4 /nsd/nsd -c /nsd/nsd.conf
/usr/sbin/jail /jails/dns dns 1.2.3.5 /unbound/unbound -c /unbound/unbound.confSo /jails/dns is a holder for two different dns servers and they run, jailed, from the same root. It's a little unorthodox but in this case I find it to be elegant.
For some of my jails that is how I run them too. Especially where I am being especially paranoid about security. I was trying to answer about 'general use/unexpected gotchas' scenario.
We deal with the hands we are given. I wish I could run it as tight as that on all of my boxes, but the bosses I deal with do not want to waste money on upgrading old infrastructure but still get mad when it isn't running. So fat jails are my best compromise. My other option was a virtualbox/vmware setup.
There are very very few things that cannot be told to bind to the real jail IP address instead of localhost. Most stuff will just work. And that's it. But there are also added benefits here:
* Parts of the filesystem cannot be altered, period. You update your base from your jailhost and every jail takes the change. That was an added security benefit.
* Pkg software can be individually installed per jail, goes into /usr/local. FreeBSD has already been brilliant in separating the base system from the third party software.
* For minor and major version bumps, we developed a simple set of steps and tools to upgrade a jailhost but leave the jails in their previous versions, maintaining multiple versions of base, like /var/jails/basejail104, /var/jails/basejail113, and so on. So the downtime is minimized, and each jail can be upgraded later in its own pace. This was a huge relief compared to having to upgrade everything only to find that some piece of software doesn't quite work correctly in the next version. And rollback is possible, by just copying the jail.
* Jails can likewise be very easily copied between jailhosts with a couple of rsync commands and some simple script.
Have used iocage and zfs and it is brilliant, but even without the benefits of zfs clone and snapshot, jails were (and I believe still are) a very pleasant experience to work with.
Indeed, the first thing I thought when seeing this post was "I wonder how long the support for each FreeBSD release is". Looking at Wikipedia (https://en.wikipedia.org/wiki/FreeBSD#Version_history), it seems to be around 5 years. Still no match for the 10 year support CentOS users expected; IMO, 5 years is too short when installing out of cycle (for instance, since the current stable 12.x was released two years ago, if I installed it today on a new computer I'd have only 3 years of support left).
If indeed 5 years suffices, Debian LTS may also be a candidate.
(Also, it's Warren Lash who gets murdered, not Warner Losh...)
edit Or perhaps not? This exists: https://git.freebsd.org/
> We'll self-host the git repo and manage the first layer of mirrors ourselves. We'll publish the repository to github, gitlab and other places that are useful for our developers, users and contributors.
1: https://github.com/bsdimp/freebsd-git-docs/blob/main/big-pic...
Microsoft has done this for many long-lived repos; Windows and SQL Server are the two famous examples, with multiple such transitions.
It actually works surprisingly well with git lfs now. Operations are quick enough and so long as you use persistent CI severs (so they never have to clone from scratch) builds aren't affected by the size either.
which seem to be invoking this svn2git program (which is also copied into the freebsd/git_conv repo): https://github.com/svn-all-fast-export/svn2git
HAMMER.
No ZFS