Make --color-words more readable with LaTeX files: add *.tex diff=tex
to the repository's .git/info/attributes or to your $HOME/.gitattributes
(read man gitattributes for more info on this, it supports other languages
too)

Browseable Web Repository

To make an online, browsable web repository on a web server (I assume you have
ssh access to it).

(“username”, “my.web.server” and “path/to/” are exactly what you think
they are.) Note the “.git” at the end of the path, it has to be there
because git push is going to send its data into that directory.

When you run git push web master to upload the content of the source
repository to the web repository, the post-receive hook checks out the
latest version. The next time, you don't need to specify the “master” branch
any more, simply running git push web is enough.

Mercredi, 12 octobre 2011

Autofs allows to automatically mount a filesystem when changing directory to
the mounting point. The process is frozen while the file system is being
mounted, and then the chdir() completes and enters the root of newly mounted
filesystem.

I have been using autofs for several years, at first for mounting USB sticks,
but now also for SMB shares and SSHFS. It is meant to be used for command-line
users, I don't doubt that modern desktop environments provide the same features
for GUI users.

The following describes my setup on a Debian Squeeze; there may be a more modern
way of doing things (the original setup was on a Debian Sarge). I assume that
you know how to administrate a Debian system (in other words, I won't be held
responsible for damaging your system if you follow those instructions without
understanding what they mean).

Autofs

The first step is to install the autofs, bsdutils, coreutils,
lockfile-progs, gawk (or mawk), sed and the util-linux packages
(most of those are probably installed already). The wget package (and
command) allows me to write concise commands below, but feel free to use
any other tool to download the necessary files from my web page.

USB Automounter

This setup allows to mount automatically any USB Mass Storage device, without
the need to manually configure anything (as is the case in this Debian
tutorial).

You then need to edit /etc/usbautomount/usbautomount to change references to
mweber to your own username, and possibly change the mounting options (see
line 142 of the script). I still use latin1 as a character encoding, so I want
filenames to be automatically translated into latin1 for VFAT filesystems.
Other filesystems are mounted without particular options.

The idea here is that when you plug a USB Mass Storage device into the
computer, udev runs the usbautomount script that creates a name based on
the USB device's vendor, model, instance (in the case the physical device
contains more than one USB Mass Storage device, such as multi-card readers or
smartphones with internal and removable flash memory) and partition number,
creates a symlink in /var/run/usbautomount that points to a directory of the
same name in /media. When you access the symlink, automount creates the
directory in /media and mounts the file system from the USB device to that
directory.

If you chdir() out of that directory, after 3 seconds automount unmounts
the filesystem. If you chdir() into the directory again, automount mounts
it again. The short timeout for automatic unmounting allows to unplug the
device almost immediately after cd-ing out of the mount point (provided that
there is no data to be written onto the device anymore). When you unplug the
device, a script (generated by usbautomount when the device was plugged in)
is run to remove the symlink from /var/run/usbautomount.

The cherry on the cake of this setup is the following:

$ mkdir $HOME/mnt
$ ln -s /var/run/usbautomount $HOME/mnt/USB

This way, $HOME/mnt/USB is automatically populated with links to the devices
that you plug to your computer.

SMB/CIFS shares

The smbclient and cifs-utils packages need to be installed.

Run as root:

# mkdir -p /mnt/smb

Edit as root the /etc/auto.master and add the following line:

/mnt/smb /etc/auto.smb --timeout=10

(/etc/auto.smb comes with the autofs package).

Run this as your regular user:

$ ln -s /mnt/smb $HOME/mnt/smb

If you have an SMB/CIFS server named "foo" containing shares called "bar" and
"quux", then going into /mnt/smb/foo will mount "bar" and "quux" in
/mnt/smb/foo/bar and /mnt/smb/foo/quux. Automatic unmounting will happen
10 seconds after leaving /mnt/smb/foo.

If "foo" requires credentials (login and password), you can put them in
/etc/auto.smb.foo as follows:

username = my_username
password = my_password

SSHFS

SSHFS itself requires some amount of setup. I will assume in the following
that the client computer is called "local" and it accesses using SSH and
SSHFS a remote computer called "remote" with user "user".

First, install the sshfs package. Then you need to create an SSH key for
root@client, and authorize this key for user@remote. In the end, root@local
must be able to log into user@remote using an SSH key instead of a password.

Once this is working, run as root:

# mkdir -p /mnt/ssh

Then edit /etc/auto.master as root and add the line:

/mnt/ssh /etc/auto.ssh --timeout=10,--ghost

Then create /etc/auto.ssh and add a line that looks like this (change the
"user", and "remote" as needed):

By default, SSHFS will mount the home directory of "user@remote" into
/mnt/ssh/remote. If you need to acces another directory (e.g., /tmp),
just append this path to the end of the line in /etc/auto.ssh:

CDROM

It just came to my mind the other day that I could automount CD and DVD as
well, but I haven't thought about the details yet. I remember the feature to
be very annoying in Solaris twelve years ago, where the system was mounting
the CD in a directory named after the label of the CD's filesystem, and never
removing this directory. After mounting a few discs, the automount directory
was filled with various directories with abtruse names, and you had to guess
which one contained your data (I suppose mount would have told me what I
wanted to know, I don't remeber if I tried that).