Closing svn2github

13 Jan 2019 18:06

Almost exactly one year ago, I was planning to spend some more time on svn2github, (see svn2github: Next Steps).

Unfortunately, I never delivered on that promise, and to put it as directly as I can, I need to close the project altogether. (Please continue reading if you're interested in doing a similar thing yourself!)


svn2github has been up since 2011/2012 (based on whois data). That's been 7 years already! What started a little side project, stayed exactly that. I kept it running, because I've seen people use it. I'm extremely happy I could help, but this time has come to an end.

I created svn2github back in 2011 to help my team at Allegro deal with SVN dependencies to our Git project. We wanted to use Git for our PHP application and Git submodules for our dependencies, but at that point in time many mainstream projects were still using SVN. Then out of a weekend of quick Python coding, svn2github was born!

7 years later and most programmers don't know what SVN is anymore :-). Most projects are either hosted in Git or Mercurial with big corporations backing them (Microsoft, Facebook). Also it looks like git submodules didn't catch on and language-specific dependency management is used instead (npm for JS, composer for PHP, etc). I don't think anyone will miss svn2github, but if you will, please leave me a comment, I will gladly share some information on how to build a service like svn2github. Let me remind you it was born in one weekend!


Through the 7 years of operation, its users mirrored about 1300+ SVN repositories to GitHub. My single server running the project was down a few times due to not scaling properly when mirroring HUGE repos (that I needed to disable at some point to continue operating). After removing the HUGE repos, the repos mirrored to GitHub currently take about 200GB.

Plan forward

13 January 2019: This note posted
20 January 2019: Disable automatically updating the repos (can still add more repos, but this will be a one-time import operation)
27 January 2019: Disable adding new repos

I'm not going to remove repos from GitHub (unless someone requests it due to legal issues, etc).

Next steps

The biggest challenge running the project was making sure all of the 1,000+ repos are actually mirrored. If you have just one or two repos to look after, your job is much easier, in fact I created a little helper script to help you do just that. Please check the simplified "just one repo" host-yourself version of svn2github at this link:

Thank you!

Thank you all for using the service. If you want to contact me, please leave me a direct message on Wikidot, or send me an email, or leave a comment.

Comments: 9

svn2github: Next Steps

10 Jan 2018 04:24

I'd like to invest a bit of time in . I'd like to do the following things:

  • Add more transparency in the "add" queue and process — i.e. you should be able to see more than just "Queued" when you add a repo to be mirrored.
  • Add some end-to-end tests. Should be easy to do, given how limited the functionality is
  • Add a status page: showing results of the tests above, number of repos cloned, average mirror latency, last sync time, etc
  • Add Monaro mining on the add page. Mine some money for me while waiting to get your repo cloned (I'd rather do this than ads)
  • Change the syncing mechanism: currently it's mostly random, i.e. your repo might be updated every few hours or days depending on your luck. I'd like to weigh how often a repo is updated given how it is (sync smaller/faster repos more often) and whether it generally succeeds or not (if a repo doesn't sync once, increase the interval for it, so other repos can be at benefit).

Comments: 3

Centos Chroot

12 Dec 2017 19:49

Let's say you want a chroot with CentOS with an older version of the system to test something.

Get the minimal root fs

  1. Check out Docker images for CentOS:
  2. Follow the Dockerfile link for the version you're interested in, say 6.6:
  3. Go one level up in GitHub and locate the centos-*.tar.xz file, it's the archive with the mininal rootfs for CentOS:
  4. Click the download link

Prepare a directory, unpack the root fs

sudo mkdir -p /mnt/centos-chroot/
# You may need to uncompress the XZ file, but my tar could deal with it, so try yourself:
sudo tar -xf /path/to/centos-6.6-20150304_1234-docker.tar.xz
# Mount some pseudo filesystems:
cd /mnt/centos-chroot/
sudo mount --bind /sys sys
sudo mount --bind /dev dev
sudo mount -t proc proc proc

Enter your precious chroot:

sudo chroot /mnt/centos-chroot/ /bin/bash
. /etc/environment


Comments: 0

Getting Used To Mac (or not really)

11 Oct 2017 19:32

Starting October 3rd I've been using a Mac. This has been very challenging and here are a few reasons why (and how to fix it).

Touch Bar

The keyboard is equipped with the amazing piece of technology called Touch Bar. What is it? It's a replacement for the top row of the keys on the keyboard. What's wrong with this?

*Firstly*, the buttons on it are displayed. You need to touch them, not press. This means a lot of accidental actions done.

*Secondly*, the buttons displayed change depending on the application running. This means you need to LOOK at the keys before you can "press" them. Not sure about you guys, but I think looking at the keyboard is LAME.

*Thirdly*, when running some programs the things displayed on the bar change with every key press. This is very annoying. Example: iTerm.

How to solve: unfortunately you cannot disable Touch Bar, but you can configure it to only show the functional keys. You take away the customizability of it for the applications so the buttons shown are always the same.

Unfortunately this still means you press a lot of those keys accidentally, so to solve the other part of the problem: use an external keyboard.

Keyboard continued

Touch bar is just one thing that's wrong with the keyboard, there are more things.

This is highly subjective, but the keyboard is very unpleasant to type on. It feels very plasticky.

There are no "Home" and "End" buttons on the integrated keyboard. Even if your external keyboard has the Home and End buttons (and other useful stuff like Page Up/Down), which is better do, those work in a very weird way: Home takes you to the beginning of the document, End to the end, rather than to the first and last character of the line. There's a bit of trickery you can do to "fix" that thankfully, but the default behavior is just broken.

I treat my work and my health seriously. My work involves typing on a keyboard and that can involve serious injuries. That's why it's important to use ergonomic keyboards. Those keyboards tend to have PC layout rather than a Mac layout. What does it mean? The layout of the lowest row is like that: Ctrl, Win, Alt, Space, Alt, Menu, Ctrl. On Macs your layout is this: Ctrl, Option (alt), Command (win), space, Command (win), Option. On a PC the convention is the right Alt is for typing local characters, for example Alt+a = ą, while the left Alt is for shortcuts. On Macs both Options work the same way. The problem with this setup is you can't easily switch between keyboards, because you'll quickly start hitting Command+a instead of Option+a which selects everything in your text field. Super annoying, so what you need to do is to remap your internal keyboard to switch Command and Option keys. If you wanted to "fix" your external keyboard instead you're going to re-learn typing your local characters with your left Windows key, because there's no Windows key on the right side…

As some of you may know, I type on a keyboard using the Dvorak layout. On Macs this mean I can only type in English… There's no Polish Dvorak… Unless you load a custom keymap, which binds ź to Option-x instead of Option-w which is just next to Z… Thankfully you don't use ź that much.

Mouse / Touchpad

There's a controversial setting for your mouse and touchpad named "Natural" scrolling, which is really "reversed" scrolling, i.e. it reverses how the scroll used to work on both touchpad and mouse. While I agree the "Natural" scrolling makes sense for touchpad, and I'd like to use that, that setting also reverses the scroll behavior for your mouse. ANNOYING! You need a separate program running in the background to allow you to control both settings separately. It's called "Scroll reverser".

Playing with windows

A bunch of annoyances related to window positioning. There's a Command+Tab shortcut for switching applications and Control-Tab shortcut for switching tabs in a window. But how do you switch between windows of the same application? (Say you have a few browser windows). There's another keyboard shortcut for that. Don't worry. There's no setting to merge window and application switcher though.

I expect the application to hide when I click on the application icon in the dock. What happens? Nothing. Great. But hey, there's Command+h shortcut for this. (Also annoying if you're used to using Ctrl-h shortcut and also started "naturally" using Command instead of Ctrl for some shortcuts).


Macs take forever to (re)boot. Even with SSD, ultra high performance CPU and software carefully trimmed to the hardware (or the other way round). It takes very long to reboot your computer. Thankfully you don't need to do that daily, but once you want to do this, you're gonna have a lot of waiting.

When I click my Terminal icon on an older Linux machine, my terminal window pops out and shows me my prompt sign immediately (I mean everything happens below 200ms from the click). On my Mac it may take 3 seconds from the window opening to showing the prompt. This depends on the system load, but it's definitely not as snappy as one would expect from a top-tier PRO computer.


Remember I needed to connect an external keyboard? It so happens it's a wireless keyboard with a very slim radio transmitter you put to your USB port and your laptop now has a very subtle bump. Well, that is, if your laptop has any USB-A ports. If you have a Mac, you'll need a 10-cm long adapter for your transmitter. Bravo! Obviously you also need an adapter if you want to connect your screen to a display, because the laptop doesn't have an HDMI port either.

Summary and some good things

Summing up, the machine needs a lots of customization to make it work sensibly. Switching from using Ctrl for most shortcuts to Command is not that bad and has one big up-side. In your terminal applications, you can use the same Command+c, Command+v for copy/paste as in the other applications and Ctrl+* for your regular in-command-line shortcuts (Ctrl+c, Ctrl+z, etc). There's no conflicts like in Linux (where the copy is done with Ctrl+Shift+c instead).

Also because the laptop is powered with USB-C, I can use my laptop charger to charge my USB-C phone!

Comments: 3

page 1 of 45123...4445next »
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License