version control for important files

Μέχρι να φτάσω στο σημείο να χρησιμοποιώ κάποιο configuration management system χρησιμοποιώ το cvi, ένα πολύ απλό vi wrapper script για να κάνω edit τα αρχεία στα οποία θέλω να κρατάω revision history (στο σύστημα πρέπει να υπάρχει εγκατεστημένο το GNU RCS).

#!/bin/sh
#
# cvs-vi -- script by stsimb
# use this to keep certain files under revision control
# stores revision info in $filename,v in same directory

if [ -z "$1" ] ; then
  echo keep filename under version control, storing info at filename,v
  echo usage = $0 filename
  exit 1
fi

if [ -L $1 ] ; then
  echo please dont use $0 on symbolic links
  exit 1
fi

co -l $1
vi $1
ci -u $1

Μετά το πρώτο cvi, υπάρχουν δύο αρχεία στο filesystem, πχ.$ ls -l mx-in.mc*

-r--r--r--    1 root     root         4426 Oct 19 09:20 mx-in.mc
-r--r--r--    1 root     root        10615 Oct 19 09:20 mx-in.mc,v

Οταν θέλω να δω τις αλλαγές που έχουν γίνει, χρησιμοποιώ το rlog

$ rlog mx-in.mc

RCS file: mx-in.mc,v Working file: mx-in.mc
head: 1.14
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 14;    selected revisions: 14
description:
this file is used to generate sendmail.cf
----------------------------
revision 1.14
date: 2007/10/19 09:20:47;  author: root;  state: Exp;  lines: +3 -3
set remote STARTTLS timeout to 2 mins
----------------------------
revision 1.13
date: 2007/05/23 07:16:54;  author: root;  state: Exp;  lines: +6 -10
increase load avg for delay/queue/refuse
[...]
----------------------------
revision 1.3
date: 2007/03/15 07:17:10;  author: root;  state: Exp;  lines: +7 -4
add features require_rdns and badmx
----------------------------
revision 1.2
date: 2007/01/22 14:50:17;  author: root;  state: Exp;  lines: +12 -12
comment out local rulesets
----------------------------
revision 1.1
date: 2007/01/22 14:49:56;  author: root;  state: Exp;
Initial revision
=============================================================================

Οταν θέλω να δω τι ακριβώς άλλαξε πχ. από το revision 1.2 στο 1.3, χρησιμοποιώ το rcsdiff

$ rcsdiff -u -r1.2 -r1.3 mx-in.mc

===================================================================
RCS file: mx-in.mc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mx-in.mc    2007/01/22 14:50:17     1.2
+++ mx-in.mc    2007/03/15 07:17:10     1.3
@@ -11,14 +11,14 @@
 # the sendmail distribution.
 #
 # This file is under revision control, use cvi to edit it
-# $Header: /local/mail_src/sendmail-8.14.2/cf/cf/mx-in.mc,v 1.2 2007/01/22 14:50:17 root Exp $
+# $Header: /local/mail_src/sendmail-8.14.2/cf/cf/mx-in.mc,v 1.3 2007/03/15 07:17:10 root Exp $
 #
 divert(0)dnl
-VERSIONID(`$Id: mx-in.mc,v 1.2 2007/01/22 14:50:17 root Exp $')dnl
+VERSIONID(`$Id: mx-in.mc,v 1.3 2007/03/15 07:17:10 root Exp $')dnl
 OSTYPE(linux)dnl
 DOMAIN(generic)dnl
 define(`confTO_IDENT',`0s')dnl
@@ -29,6 +29,8 @@
 FEATURE(`conncontrol',`nodelay',`terminate')dnl
 define(`confCONNECTION_RATE_THROTTLE', `20')dnl The maximum number of connections permitted per second per daemon
 define(`confCONNECTION_RATE_WINDOW_SIZE', `60s')dnl
+FEATURE(`require_rdns')dnl
+FEATURE(`badmx')dnl
 dnl ##########
 dnl ##########
 dnl ##########

8 Replies to “version control for important files”

Σχολιάστε