Rewriting History of a Subversion Repository

At a customer installation of OpenProject, Subversion is still widely as a document management solution. While I advocate against its use for large repositories of documents, its use in that area exists historically due to the availability of clients and well-known processes for many users in the area of software development.

User errors such as deleted files and folders occur regularly and can be fixed client side. The real trouble beings when we receive incidents of files being added to the repository by mistake.

Unlike Git, Subversion (by design) does not provide client-side means to rewrite history. On the server-side, there is an ancient change request on the Subversion project tracker with some discussions in the past decade, but it appears to be a hard problem and no real solution has been achieved thus far.

Instead of rewriting a single revision, you will have to play back the whole repository with a specific exclusion of the bad changesets.

Continue reading

Tuesday, 12. January 2016

Sharing Host Volumes with Docker Containers

For development environments with Docker, a fundamental requirement is the synchronization of host folders with a Docker container. With it, a developer can employ the full power of the host to work on code locally, and instantly see these changes reflected inside the Docker container. While Docker Compose includes a command to trivially define synchronized folders with the volume command, development performance is impaired when the docker daemon is not running on the host itself—such as on OS X.

This post aims at giving an overview on the host volume performance impacts when running Docker on a non-Linux host. This post assumes a basic understanding of the capabilities of Docker and Compose. This preceding post introduces the fundamentals of Docker if you are not familiar with the Docker stack yet.

Continue reading

Saturday, 30. May 2015

An Introduction to Docker (Compose) for Development Environments

Docker has gained significant traction and stability since its beginnings in 2013. My previous experience was that creating complex application containers with multiple services was complicated and full of workarounds. Since then, Docker has taken over the linking tool Fig into Docker Compose, and has gained an interesting set of abstractions towards container orchestration. Still, there are many pitfalls regarding Docker use in both development and production. This post aims at giving an introduction to the possibilities of Docker and its limitations for isolated development environments.

Continue reading

Sunday, 3. May 2015