Age | Commit message (Collapse) | Author |
|
Previously, files in the 'Attic/' were linked into our filelist as being
'Attic/filename,v' this caused unneeded stress on certain functions
like cvs_file_classify() who had to do pointer voodoo to split out
the 'Attic/' part and do other very weird stuff to normalize the pathname
of these files.
Instead, we handle these files early in the start when we
build the fileslist in cvs_repository_getdir(). When encountering
the 'Attic/' directory, we recurse in it if required but instead of
using the 'Attic/' directory component as our base directory we stick
with the directory name where 'Attic/' resides in, resulting in the
correct filename while maintaining the correct RCSpath for the file.
This made the following things a lot easier:
(and in most cases actually fixed the below points)
- status with files in Attic/.
- checking out HEAD repositories with files in Attic/.
- checking out repositories with -rTAG.
- updating with -rTAG.
and as an added bonus the following now also works:
- correctly creating CVS/Tag in both local and remote mode thus
allowing update/status/and more to work correctly with the tagged tree.
(thanks to the correct handling of -rTAG cases).
- resetting tags with opencvs -A properly works too now.
This is a major step forward into the usability
of OpenCVS when it comes to maintaining multiple tagged trees, the next
logical step would be to fix commiting to branches.
enjoy you -stable cowards.
tested by myself, xsa, niallo and ckuethe
thanks guys!
|
|
Simplifies further size tweaks if needed.
OK niallo@ ray@.
|
|
from Mickey.
ok joris@ ray@
|
|
|
|
cvs co -rOPENBSD_3_0 works now.
along the way, simplify and rationalise code and fix a few nits.
ok joris@ xsa@ ray@
|
|
|
|
function, should not do any resource freeing.
OK joris@.
|
|
things. now gcc -Wall and lint are more happy. ok joris@ xsa@
|
|
getdirentries(2).
ok otto@
|
|
in the old school days and serves no purpose what so ever now.
otto@ mentioned this to me a while ago
|
|
this fixes a bug where opencvs update would abort if a link existed that
pointed to a non-existent file/dir
ok joris@
|
|
|
|
it is pretty obvious on itself.
ok niallo@ xsa@
|
|
|
|
tested by many, thanks.
|
|
|
|
and fix some warnings that should not come up for certain commands.
ok niallo@ otto@
|
|
not mistakenly see a file as Modified while it is not.
As a result, we can remove the very hackish cvs_hack_time() and
GNU cvs and opencvs should almost get along now.
lotsa help and okay The otto@
|
|
|
|
copy. Allows obj/ directories to exist (which are typically
symlinks.)
OK joris@
|
|
|
|
'cool' niallo@
|
|
todd@. still need to fix tag translation though.
ok joris@
|
|
stat() the filepath to get the correct type, and therefor
add it to the appropriate list.
This fixes opencvs with CVSROOTs on NFS and AFS, because they
both return D_UNKNOWN for directories (afs even for files too)
in dirent->d_type.
problem found by thib@ and todd@
tested by thib@, todd@,
ok niallo@
|
|
so that we do keyword expansion on-the-fly if required instead
of obtaining the revision in memory first, running over the revision
lines while expanding keywords and only then writing them to the fd
or memory buffer.
this drasticly decreases cpu usage by opencvs on very large trees (like src).
OK niallo@
|
|
otherwise we might get a NULL dereference when free'ing the
cf struct with cvs_file_free()
|
|
in some places and much
reduced memory usage. note that only checkout has been fully converted to use the new high-performance
functions. other codepaths (e.g. update) still use the old method which is provided for backwards
compatibility. we can convert the remaining slow bits over to the new api piece-by-piece.
"commit this, now" joris@
brad@ tested, too.
|
|
ok niallo@
|
|
copy the file in the current working directory to CVS/Base/
ok ray@ joris@.
|
|
first bits for the edit command for now.
definitly still more work to do for optimization...
|
|
- compare the <file> in working dir and the one in CVS/Base/<file>
for the unedit command.
hints otto@, input and ok ray@ niallo@.
|
|
last character in the string returned by fgets(3) is '\n' before
blindly overwriting it.
OK and input from xsa@
|
|
although i advise against using it on real development trees for now.
only a few commands work right so far:
- commit
- diff
- status
- log
- update (partially working)
if you feel like testing remote and run into bugs feel free to
contact me, and please include a full trace (-t).
|
|
we let the commands pass the correct function.
all in preparation for remote.
|
|
|
|
except it takes a decriptor as argument instead of a path.
modified cvs_buf_load() to open the descriptor then pass
it to cvs_buf_load_fd().
change all the calls to cvs_buf_load() that have a descriptor
open for the path to cvs_buf_load_fd() to prevent races.
|
|
hacking on the plane from toronto to barbados.
i will probably hack some more since im stuck in barbados
for 12 lovely hours over night cause the carribean airlines dont understand
the meaning over 'more than one flight a day'.
|
|
|
|
- rework rcs_getrev() to correctly support branches
- rework rcs_translate_tag() to correctly translate given symbols or
branches into their matching revisions
- rework rcs_rev_add() to correctly update its 'next' pointers
and insert the new revision in the correct place on the list.
- rework rcs_head_get() to return the latest revision on the default
branch if it has been set or the normal HEAD revision otherwise.
- no longer access the rf_head member of the RCSFILE struct manually,
use the rcs_head_get() function which correctly returns the HEAD
revision, there might be a default branch that has to be used.
- for now, when commiting a new revision reset the default branch.
|
|
|
|
|
|
for each cvs_file struct, this will help us with sticky tags,
commiting to branches and importing into existing repositories.
|
|
in the normal repository, and a way to identify an RCS file in
the Attic in the RCSFILE struct.
will come in handy later on.
|
|
but work is in progress for importing stuff into existing repositories.
|
|
so remove it from there again.
|
|
no longer matches the timestamp in the CVS/Entries file, be
sure to compare the file contents to the revision contents to
be positive the file actually changed.
otherwise we would see a file as modified if somebody
would for example open it in vi and simply :wq it.
|
|
|
|
|
|
- default to CVS_FILE when something is totally unknown
- cvs_get_repository_path() now returns the full repository path for
the given argument.
- cvs_get_repository_name() returns the contents of CVS/Repository
to the caller.
- allow command callbacks to specify if our recursion code needs
to skip the directory or not.
- when checking for a admin directory, make sure it is in fact
a directory. if it is not we dont want to recurse inside.
|
|
if an RCSFILE is dead, will come in usefull later in commands.
|