Xlinks and branch per task in a DVCS environment.

Wednesday, June 20, 2012 0 Comments

I’m going to tell how we use the Xlinks down here at the Plastic SCM dev team combined with replication.

No surprises if I tell you we use Plastic SCM to handle the plastic development :)

Yes, you know, eating our own’s dog food and all that.

Well, if you take a look at our items view you’ll see something like the following:

This screenshot is coming from my laptop, and I have a server (using SQLite backend) installed on it, and then I push/pull changes from the central.

We’ve 5 main directories and each of them is pointing to a different repository.

  • 01nerva is our main code repository, located at a repo named “codice”. The server code, gui code, plugins, everything is in there. I’ve a light replica with only a few branches and changesets instead of the whole repo on the central server at the office.
  • 02nervathirdparty is our “third party” directory. Libraries coming from external sources, database providers, tools (like nant, ant and many more) live there. It is stored on a different repo, called “nervathirdparty” which is also on my laptop. We use a writable xlink so when we branch on the “codice” repo, if there are changes on this directory, a branch is automatically created and tracked.
  • 03pnunit is the test code. A full repo with “pnunit tests” (PNUnit stands for Parallel NUnit and it is a library we developed years ago and we contributed to the NUnit project. It allows us to coordinate tests among different machines). We use a writable Xlink to this repository, because it is extremely common that a modification on the “codice” repo goes with some code to test it (GUI tests, PNUnit tests and so on).
  • Documentation is a directory pointing to the “doc” repo, which is where the main docs live (test results, schedules, analysis docs, designs and many more). We use a readonly Xlink because we normally use a different workspace to deal with design docs. In fact we only have this one here for testing purposes.
  • Taskdocumentation, again another Xlink. This is a very interesting repo: each time we complete a task, we add screenshots and a short explanation so that the tech writers can use it to document the new stuff. Yes, we could have used an issue tracker for this, a sharepoint server or whatever… but when you develop a SCM… everything looks like a repo :P

    Pulling branches

    Ok, now, as I said I work replicated without direct conn to the central server. So, considering a single task I need to pull can have like 3 associated branches on 3 different repositories… how do I manage to make the replication process simple?

    Look, I have a sync view defined with all the sources (on localhost) and destinations (on Diana). So I update everything, then filter by the branch I want to pull (or push), multiselect on the different repos, and click on “pull branch”.

    And hence I can get all the branches I’m interested on with a single click (or push them!).

    Was it helpful?

  • 0 comentarios: