Revision 616293

Go back to digest for 31st December 2006

Other in Other

Clarence Dang committed changes in /branches/work/~dang/scripts:

Add 3 useful scripts I've had sitting around the place:

1. kbus (starts DBUS server safely)
~~~~~~~
Running a KDE 3 app starts the DCOP server. However, running a KDE 4 app does not start DBUS. This script ensures that DBUS is started exactly once for the current user, no matter how many times it is run.

Usage: ". kbus" or "source kbus".

Run this on every console and it will start DBUS the first time and setup the environment variables every time. In other words, you run it every time you need DBUS and it will take care of the details.

Maybe kdesdk/ already has a script that does this, not sure.

2. svnupfast (an "svn up" that takes half the bandwidth)
~~~~~~~~~~~~
When I was on a modem, "svn up" was far too slow so I experimented with an alternative: "svn up" in each subdirectory (and "svn up -N" in the root).

Benchmark: A checkout of <a href="https://svn.kde.org/home/kde/trunk/KDE/kdebase/konqueror">https://svn.kde.org/home/kde/trunk/KDE/kdebase/konqueror</a>; was updated from r514723 to r532882.

Update Method | Wall Clock Time | Bytes In | Bytes Out
---------------+-----------------+-----------+-----------
svn up | 3m32.312s | 1,022,071 | 82,589
svnupfast | 5m36.562s | 585,901 | 92,979

Conclusion: "svnupfast" is actually slower than "svn up" (probably due to handshake latency) but takes half the bandwidth (I've always suspected that SVN takes more bandwidth than needed).

"svnupfast" is therefore only faster on a shared connection where bandwidth is of the essence.

3. svn-import-changes (distributed revision control system)
~~~~~~~~~~~~~~~~~~~~~
Helps manually merge changes from one repository into another. Great for modem users.

The idea is that you take a checkout of the main repository and create a local repository using this checkout. You then work exclusively using the local repository.

When you have access to the main repository again, do a clean checkout and run this script inside this checkout, after modifying the script to point to your local repository.

It then merges your local repository into the main repository, revision by revision, pausing at each step. The pausing lets you CTRL+C to resolve conflicts and then you can restart the script again, after modifying it to point to the next revision.

The poor person's distributed revision control system. I'm sure SVK works much better but this is simpler and has fewer dependencies.

File Changes

Added 4 files
  • /branches/work/~dang/scripts
  •   /kbus
  •   /svn-import-changes
  •   /svnupfast
4 files changed in total