Keksin, että voisin dokumentoida, minkälainen
hakemistohierarkia minulla on. Hyvien käytäntöjen levittäminenhän on
hyvä käytäntö, ja minun mielestäni minun hakemistohierarkiani on hyvä
käytäntö.
Kuten selitän nimeämisohjeessani
(http://sange.fi/~atehwa/unix-kurssi/nimeys.pdf kohta "Pidä päätaso
siistinä"), kotihakemistossa ei saisi olla kovin monta alihakemistoa
eikä mielellään yhtään dokumenttia. Pistehakemistojen syntymistä ja
tuloa ei tietenkään voi estää, mutta oma kotihakemisto on syytä pitää
niin siistinä kuin mahdollista. Itse asiassa käytän joskus
kotihakemistoa ikään kuin "superväliaikaishakemistona", josta jokainen
sinne päätynyt tiedosto '''pitää''' poistaa välittömästi eli: tiedoston
tallettaminen kotihakemistoon on metatieto siitä, että se pitää poistaa
heti, kun sen huomaa.
Kotihakemistollani on seuraavanlainen rakenne (jotkin näistä
hakemistoista puuttuvat riippuen järjestelmästä): {{{ ~atehwa/ (tai
~pkalliok/) bin/ binaries/ Desktop/ install/ etc/ usr/ <... jne...>
proj/ dotfiles/ yhteystiedot/ <... muita pysyväluonteisia tietoja...>
public_html/ tauhkaa/ <... muita webiin näkyviä asioita...> tmp/
download/ try/ <... muita väliaikaisluontoisia tiedostoja...> }}}
Hakemistot bin/, Desktop/ ja public_html/ ovat olemassa
teknisistä syistä eikä niille mahda paljon enempää kuin
pistetiedostoille tai -hakemistoillekaan. public_html/ on myös
"päätaso" ja siksi kaikki satunnainen, mikä pitää vain saada näkymään
webissä, menee hakemistoon public_html/tauhkaa/.
install/ on hakemisto, jota käytetään prefixinä, kun asennetaan
kotihakemistoon kamaa. Siis ./configure . Sinne myös puretaan valmiiksi
käännetyt ohjelmat. bin/:ssä on sitten linkkejä install/usr/bin/:iin
jne.
proj/ on hakemisto, jossa tehdään kaikki työ. Sen alihakemistot
edustavat toisiinsa liittymättömiä hommia. Jokaiseen hakemistoon
proj/:n alla käytetään [versionhallinta]a. Joskus proj/:n alle joutuu
tekemään jotain, jota ei voi heti viedä keskitettyihin säilöihin. Joka
tapauksessa kaikki proj/:n sisältämä kama on sellaista, ettei sitä saa
poistaa (ennen kuin muutokset on viety keskitettyyn
versionhallintasäilöön). Muutokset näihin tiedostoihin levitetään eri
koneiden välillä versionhallinnan avulla, minkä vuoksi minulla ei ole
käyttöä netin yli jaetuille hakemistoille kuten Dropboxille.
Käytännössä siis työskentelyy alkaa aina muutosten hakemisella säilöstä
ja loppuu muutosten viemiseen säilöön (jos netti on
käytettävissä).
Kaksi hanketta ansaitsevat erityismaininnan ja ovat käytännössä
joka järjestelmässä, jossa minulla on kotihakemisto. proj/dotfiles/
sisältää käyttämiäni asetuksia ja monet pistetiedostot ovat itse
asiassa linkkejä sinne (siellä on Makefile, joka osaa perustaa nämä
linkit). Siellä siis hallinnoin esim. ssh-aliaksia, sähköpostiohjelman
asetuksia ja niin edelleen. proj/yhteystiedot/ on puolestaan
yhteystietotietokanta, joka on paremmin dokumentoitu sivulla
[nettipäiväkirja 23.05.2014].
Muut proj/:n alla olevat hakemistot ovat esimerkiksi
softaprojekteja (kuten stx2any/), elämänalueen mukaan jaoteltuja (kuten
opiskelu/) tai ihan tekstiä vain (kuten mtx/ ja diary/).
binaries/ on periaatteessa samanlainen kuin proj/, mutta siellä
on vain kuvia, videoita ja ääniä. binaries/:n kamat eivät ole
versionhallinnan alaisia, mutta synkkaan ne paikasta toiseen rsyncilla.
Tiedostot, jotka ovat vahingossa päätyneet binaries/-hakemistoon,
poistetaan binaries/siivoa.sh-skriptillä, jota voi ajaa niin usein kuin
haluaa ja missä vain.
tmp/ on hakemisto, johon laitetaan dokumentit, joita ei ole
tarkoitus säilyttää ikuisesti, esimerkiksi netistä ladattu PDF tai
sertifikaatti, jota kopioidaan moneen eri järjestelmään. tmp/download/
on hakemisto, johon tiedostot ladataan, ja tmp/try/ on hakemisto, johon
ladatut paketit puretaan (ja jossa voi buildata; asennukset tietenkin
install/:iin).
Siinä onkin oikeastaan kaikki. Muille päätason jutuille minulla
ei ole ollut käyttöä. Joissain paikoissa minulla on vielä backup/
ja/tai archive/, joiden käyttötarkoitus lienee ilmeinen. Lisäksi
yhdessä paikassa minulla on darcs/ versionhallintasäilöjen paikaksi;
proj/:n alla olevat hakemistot ovat siis yleensä klooneja siellä
olevista mastereista.
* [merkintä: 2014-06] * [atehwa] * [kategoria:
päiväkirjamerkintä] * [kategoria: työkalut] * [parempi tapa synkronoida
tietoja laitteiden välillä] * [muutosten merge] [miten
järjestelen kotihakemistoni]