Source Tree Workplaces over NFS

Arch puts a lot of data in the directory {arch} along with your project source. Besides that, a lot of temporary files are created in the same directories to execute commands like tla star-merge or tla changes.

Avoid NFS in this situation! It can make arch be 50 times slower or even more. Besides that, NFS changes the inode numbers of the files and can make tla not accept the pristine copies of the branch in the {arch} directory.

To avoid that, you can:

Using a revision library

An important part of the content of the {arch} directory is pristine trees. These can be replaced by a (greedy) revision library located on a local disk (possibly even /tmp). This will both reduce the size of your working directory and speed up tla. With tla 1.2, revision libraries (and pristine trees) should not be placed on NFS servers, because the corruption-detection routines expect device ids to remain constant, and NFS device ids can change. This has been fixed, so this problem will not apply to tla 1.2.1.

Using tla remotely

Use a script like this one instead of the local tla to run the commands in the NFS server (for LINUX):

#!/bin/sh
# convert current directory name from local to remote (nfs server)
DIR=$(pwd -P | sed -n 's/^\/nfs_client_dir\//\/nfs_server_dir\//p')
SERVER="nfs_server"
SEPARATOR="^L"     # Ctrl-V/Ctrl-L

# not a mounted NFS filesystem? Run locally.
if test "$DIR" = ""
then
   exec /usr/bin/tla "$@"
   exit
fi

# how should be the remote environment?
REMOTEENV="export EDITOR=vim;cd $DIR"

# is my stdout a tty? If it is, force virtual tty in ssh for "vim"
SSHOPT=""
if tty -s <&1
then
   SSHOPT="-qt"
fi

# create a escaped ssh parameter list
IFS="$SEPARATOR"; PARS="$*"; IFS=""
RECOVERPARS='IFS="'"$SEPARATOR"'"; set -- $(echo "'"$PARS"'"); IFS=""'

# run remote tla
exec ssh $SSHOPT $SERVER "$REMOTEENV;$RECOVERPARS;"'tla $@'

Attention: the field separator $SEPARATOR should be defined with Ctrl-V/Ctrl-L, not with the characters ^ and L. It has to be something not used in any tla command, that's why you should use something strange like Form Feed. Good design! http://soft-toys.wyger.com http://soft-toys01.wyger.com http://parfume.wyger.com http://parfume01.wyger.com http://hotsources.wyger.com http://hotsouces01.wyger.com http://uniforms01.wyger.nl http://uniforms02.wyger.nl http://uniforms03.wyger.nl http://uniforms04.wyger.nl http://z00.wyger.com http://z01.wyger.com http://z02.wyger.com http://z03.wyger.com http://z04.wyger.com http://z05.wyger.com http://z06.wyger.com http://z07.wyger.com http://z08.wyger.com http://z09.wyger.com http://z10.wyger.com http://z11.wyger.com http://z12.wyger.com http://z13.wyger.com http://z14.wyger.com http://zt00.wyger.com http://zt01.wyger.com http://zt02.wyger.com http://zt03.wyger.com http://zt04.wyger.com http://zt05.wyger.com

NfsWorkplaces (last edited 2008-07-24 12:25:07 by 82)