On Fri, 2003-11-28 at 02:42, David Neary wrote:
> Hi Joao,
> Joao S. O. Bueno wrote:
> > But, right now, I want to update it. So, let?s go by steps:
> > I go
> >  cvs -z3 update
> You should use cvs up -dP - this will create directories present
> in the repository, but not locally, and prune (remove)
> directories which have been emptied via file removals. There are
> reasonable defaults, and should probably go in your .cvsrc, along
> with diff -u.
> That alone will fix some of your problems.
> > I go
> >  make distclean
> If you really want to clean out everything, then maintainer-clean
> is perhaps better. After doing this, you will need to re-run
> autogen.sh. Among other things, this rebuilds Makefile.ins from
> Makefile.ams, which is probably the point at which the changed
> filenames are causing a problem for you.

If you are going to run 'make distclean' or 'make maintainer-clean' you
should do it *before* the CVS update. Otherwise files in the make
processes' run might have been removes, Makefile.am files could have
been changed (leading to changed Makefiles) and so the right files will
not be cleaned and so on and so on. Your current method arbitrarily
changes a bunch of code and then hopes that the old Makefile will still
be relevant. Not always a good assumption.

Also, the attached file may prove useful if your tree is a little
confused. Run 'python super-clean.py .' inside the gimp directory. It
will remove all files that are not known to CVS from your local copy
(without running out on the network -- it just looks at the local CVS
control files). You can run this, then 'cvs update' to get any new files
and be assured that you have a pristine CVS copy.

#!/usr/bin/env python
Copyright 2003 Malcolm Tredinnick <[EMAIL PROTECTED]>

Remove files from a CVS checkout that are not known to CVS. This is all done by
looking at the local CVS/ directory, not by checking with the CVS repository.
Useful for saving space or starting a build from a completely clean CVS tree
(no symlinks to libtool.sh or anything like that).

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Library General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option) any
later version.
import sys, os, stat

def main(argv = None):
	if len(argv) != 1:
		print >> sys.stderr, "Calling format: super-clean.py <start-dir>"
	removals = []
	os.path.walk(argv[0], cleaner, removals)

def cleaner(removals, dirname, names):
	Record the name of any file not in the appropriate CVS/Entries file. The
	'names' list is adjusted appropriately so that any directories scheduled
	for removal are not recursed into.
	if 'CVS' not in names:
		print >> sys.stderr, "Bad directory %r" % dirname
	files = open('%s/CVS/Entries' % dirname).readlines()
	# Don't descend into the CVS directory, but we don't want to remove it
	# either.
	keepers = [line.split('/')[1] for line in files if line != "D\n"]
	for file in names[:]:
		if file not in keepers:
			removals.append(os.path.join(dirname, file))

def remove(removals):
	Remove all of the files in the 'removals' list.
	for file in removals:
		if stat.S_ISDIR(os.lstat(file)[0]):
			os.system('rm -rf %s' % file)

if __name__ == '__main__':
Gimp-user mailing list

Reply via email to