2019-08-10  Sergey Poznyakoff  <gray@gnu.org>

	Don't descend into internal VCS directories. Fix early diagnostics.

	* src/checkoutrc.c: Ignore internal VCS directories
	* src/config.c: Dont issue debug messages before logging is set up.
	* src/vcsync.c (main): Print diagnostic message about VCS type and
	configuration name.

	* tests/checkoutrc-rec.at: Fix expected stderr.
	* tests/checkoutrc.at: Likewise.

2019-08-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	One more fix

	* src/onfig.c (config_finish): Select named configuration based on
	vcs_type, if given

	Bugfixe

	* src/config.c (vcsync_config_free): Remove unused function.
	(cb_config): Make sure config is not NULL.

	Remove hardcoded destination directory

	Version 1.0.90

	Implement automatic detection of the VCS used.

	If vcsync binary is symlinked to the hooks subdirectory of a git or
	svn repository, it will detect the fact and will assume the corresponding
	VCS flavor (unless explicitly told otherwise).  In this case the first
	named configuration that has the matching VCS type will be used.

	* src/config.c (cb_vcs_type): Set both vcs_type and proc.
	(cb_config): Build a singly-linked list of configurations.
	(vcsync_config_kw,vcsync_kw): Pass a pointer to struct
	vcsync_config.
	(config_finish): If vcs_type is not set, try to detect what VCS
	is used.
	* src/diag.c (fullprogname): New global.
	(setprogname): Set fullprogname.
	* src/git.c (get_cwd): Move to vcsync.c
	* src/vcsync.c (parsefilename,string_suffix)
	(get_cwd,guess_vcs_type): New functions.
	* src/vcsync.h (fullprogname): New extern.
	(vcs_type): Remove const qualifier.
	(parsefilename,string_suffix)
	(get_cwd,guess_vcs_type,vdiag): New protos.

	* src/checkoutrc.c: Shut up gcc warning.
	* src/runcmd.c: Likewise.
	* src/svn.c: Likewise.

	* tests/checkoutrc-rec.at: Account for additional debug message.
	* tests/checkoutrc.at: Likewise.

	* tests/cvscom00.at: Account for eventual debug messages.
	* tests/cvscom01.at: Likewise.
	* tests/cvscom02.at: Likewise.
	* tests/cvscom03.at: Likewise.
	* tests/cvscom04.at: Likewise.
	* tests/cvsimp.at: Likewise.
	* tests/cvsimp01.at: Likewise.
	* tests/gitimp.at: Likewise.
	* tests/gitimp01.at: Likewise.
	* tests/gitpush00.at: Likewise.
	* tests/gitpush01.at: Likewise.
	* tests/gitpush02.at: Likewise.
	* tests/gitpush03.at: Likewise.
	* tests/namedconf00.at: Likewise.
	* tests/svncom00.at: Likewise.
	* tests/svncom01.at: Likewise.
	* tests/svncom02.at: Likewise.
	* tests/svncom03.at: Likewise.
	* tests/svncom04.at: Likewise.
	* tests/svnimp.at: Likewise.
	* tests/svnimp01.at: Likewise.

2019-07-24  Sergey Poznyakoff  <gray@gnu.org>

	Further fixes in the testsuite

	* tests/svncom00.at: Fix typo.
	* tests/svncom01.at: Likewise.
	* tests/svncom02.at: Likewise.
	* tests/svncom03.at: Likewise.
	* tests/svncom04.at: Likewise.
	* tests/testsuite.at (AT_NONROOT_PREREQ): New macro.
	(AT_VCS_PREREQ): Use AT_NONROOT_PREREQ for CVS.

	Improve testsuite

	Take into account version differences in CVS and GIT

	* tests/atlocal.in (CVS_FORMAT): New variable.
	* tests/testsuite.at (CVS_REPO_INIT): Use CVS_FORMAT when forming
	template string.
	(GIT_COM_INIT): Set user.email and user.name.

	Version 1.0

2019-07-20  Sergey Poznyakoff  <gray@gnu.org>

	Add bootstrap

	Update grecs

2016-06-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Adopt for using new CVS format strings.

	* src/cvs.c (cvs_proc): Drain input as recommended by the
	CVS docs.
	Handle multiple arguments.
	* src/vcsync.c (main): Don't close descriptors when forking.
	* doc/vcsync.8: Update.

2014-06-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement socket notification (tcpmux-plus)

	* src/checkoutrc.c (post_socket_send): New function.
	(flush_checkoutrc_files): Call post_socket_send
	* src/config.c: New statements post-sync-socket and post-sync-tag.
	* src/vcsync.h (vcsync_sockaddr): New struct.
	(vcsync_config) <post_sync_socket>
	<post_sync_tag>: New members.

2014-03-10  Sergey Poznyakoff  <gray@gnu.org>

	Make access file creation more configurable

	* doc/vcsync.conf.5: Update.
	* src/checkoutrc.c (access_file_name)
	(access_file_text): New globals.
	(open_htaccess): Write access_file_text to the newly created file.
	(write_htaccess,kwf_unlink): Use access_file_name instead of the
	hardcoded HTACCESS_FILE.
	(checkoutrc): Likewise.
	Initialize access_file_name, if it is not defined.
	* src/config.c: New statements access-file-name and
	access-file-text
	* src/vcsync.h (access_file_name,access_file_text): New externs.
	* tests/checkoutrc.at: Test access-file-text.

2014-03-07  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

	* src/checkoutrc.c (kwf_unlink): Use lstat.

2014-03-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow admins to define new .checkoutrc keywords.

	* Makefile.am: Add distuninstallcheck_listfiles.
	* src/Makefile.am (EXTRA_DIST): Add vcsync.conf
	(install-data-local): New rule.
	* src/vcsync.conf: New file.
	* src/checkoutrc.c (kwtab): Set fixed size. Remove all verbatim and
	text keywords. These should be defined in the configuration file.
	* src/config.c: New statement "define".
	* src/vcsync.h (MAX_CHECKOUTRC_KW): New define.

	* tests/atlocal.in (DFL_VCSYNC_CONF): New variable.
	* tests/checkoutrc-rec.at: Use ../src/vcsync.conf
	* tests/checkoutrc.at: Likewise.
	* tests/testsuite.at: Include src/vcsync.conf in all configuration
	files.

	* doc/vcsync.8: Update.
	* doc/vcsync.conf.5: Document the "define" statement.

2014-03-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement "ssi" checkoutrc statement.

	Bugfixes.

	* doc/vcsync.texi: Update.
	* src/checkoutrc.c (kwf_link): Always try unlinking the target file.
	(kwf_chmod): Take one or more file arguments. Allow for wildcards.
	(flush_checkoutrc_files): Don't check for presence of checkoutrc
	file, register the directory anyway (to make sure it is descended
	into).
	* src/cvs.c (split_arg): Fix return value.
	* src/vcsync.c (main): Print message on the stderr.
	* tests/cvsimp.at: Use CVS_COM_INIT macro.

2014-03-05  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix

	* src/checkoutrc.c (write_htaccess): Create a copy of ap for
	debugging purposes.

	Minor fix in the testsuite

2014-03-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Raise version to 0.90.91

	Fix typos

	Minor changes.

	* src/cvs.c (cvs_proc): Change diag to debug.
	* tests/testsuite.at: Set debug statement from the
	VCSYNC_TESTSUITE_DEBUG environment variable.

	Add manpages.

	Rename doinstrc to checkoutrc

	Minor changes.

	* src/cmdline.opt: Group options by functionality in the help
	output.
	New options: --vcs-type, --detach, --sleep.
	* src/config.c: Take into account new options.
	* src/vcsync.c (sleep_option,detach_option)
	(vcs_type): New variables.
	* src/vcsync.h (sleep_option,detach_option)
	(vcs_type): New protos.

2014-03-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement the unlink action.

	Add doc/.gitignore

	Fix handling of doinstrc files.

	* src/cvs.c (cvs_proc): Return directory under dist_root to change to.
	* src/git.c (git_proc): Likewise.
	* src/svn.c (svn_proc): Likewise.
	* src/doinstrc.c (doinstrc): Take root dir as first argument.
	Build all paths by concatenating dest_root, root_dir, directory
	and the file in question. If root_dir is NULL, it is ignored.
	(flush_doinstrc_files): Take root dir as first argument.
	* src/vcsync.c (main): Pass return value from config->proc to
	flush_doinstrc_files.
	* src/vcsync.h (vcs_proc_fn): Return char *.
	(cvs_proc, svn_proc, git_proc): Change prototype accordingly.

	* tests/Makefile.am: Add new files.
	* tests/testsuite.at: Include new testcases.
	(CVS_REPO_INIT,SVN_REPO_INIT)
	(GIT_REPO_INIT): Take optional argument.
	* tests/cvscom03.at: New file.
	* tests/cvscom04.at: New file.
	* tests/cvsimp01.at: New file.
	* tests/gitimp01.at: New file.
	* tests/gitpush03.at: New file.
	* tests/svncom03.at: New file.
	* tests/svncom04.at: New file.
	* tests/svnimp01.at: New file.
	* tests/doinstrc-rec.at: Fix keywords.
	* tests/doinstrc.at: Likewise.

2014-03-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Reword test descriptions.

	Add two more SVN tests.

	Remove repository-root statement and -R command line option.

	* src/cmdline.opt: Remove the --repository-root (-R) option.
	* src/config.c: Remove the repository-root statement.
	* src/cvs.c (cvs_proc): Get the repository path from the CVSROOT envar.
	* src/vcsync.c (repository_root,repo_name): Remove.
	* src/vcsync.h (repository_root,repo_name): Remove.
	(vcsync_config)<repo_root>: Remove.
	* tests/cvsimp.at: Reflect the changes.
	* tests/doinstrc-rec.at: Likewise.
	* tests/doinstrc.at: Likewise.
	* tests/namedconf00.at: Likewise.
	* tests/testsuite.at: Likewise.

	* doc/vcsync.texi: Update.

	Implement git support.

	* src/Makefile.am (vcsync_SOURCES): Add git.c
	* src/git.c: New file.
	* src/runcmd.c (runcmd): Use /dev/null for stdin.
	* src/vcsync.c (vcs_tab): Add entry for git.
	* src/vcsync.h (git_proc): New proto.

	* tests/gitimp.at: New file.
	* tests/gitpush00.at: New file.
	* tests/gitpush01.at: New file.
	* tests/gitpush02.at: New file.
	* tests/Makefile.am: Add new files.
	* tests/testsuite.at: Likewise.
	* tests/cvscom01.at: Minor change.

2014-02-28  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix

2014-02-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Complement previous commit

	Introduce named configuration blocks

	Named configuration blocks allow the user to keep several configurations
	in a single configuration file.  This is useful when several different
	repositories are used for synchronization.

	* src/cmdline.opt: New option --name: selects the named configuration
	to use.
	* src/config.c (cfg_debug_level,cfg_vcs_command)
	(cfg_repository_root,cfg_destination_root)
	(cfg_timeout,cfg_detach,cfg_sleep)
	(cfg_message): Remove.
	(default_config,config,config_name): New globals.
	New configuration block statement "config".
	* src/cvs.c: Use configuration data from the config variable.
	* src/doinstrc.c: Likewise.
	* src/runcmd.c: Likewise.
	* src/svn.c: Likewise.
	* src/vcsync.c: Likewise.
	* src/vcsync.h: Likewise.
	* tests/namedconf00.at: New file
	* tests/Makefile.am: Add new file
	* tests/testsuite.at: Include namedconf00.at
	* tests/cvscom02.at: Fix typo in the setup string

2014-02-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* src/runcmd.c (open_redirector): Actually set syslog tag from the argument.

	Rename project to vcsync

2014-02-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix doinstrc processing in subdirectories.

	* src/cmdline.opt (--doinstrc): Assume recursive processing if
	the argument ends in a slash.
	* src/cvs.c (split_arg): Bugfix.
	(cvs_proc): correctly register changed dirs.
	* src/doinstrc.c (register_directory0): New function.
	(register_directory): Take two arguments, the second one
	requiring recursive processing.
	(flush_doinstrc_files): Change to cfg_destination_root before
	processing.  Process directories recursively, where
	requested.
	* src/svn.c: Register changed directories.
	* src/websync.h (register_directory): Change signature.
	* tests/Makefile.am: Add new files.
	* tests/doinstrc-rec.at: New file.
	* tests/doinstrc.at: pass absolute pathnames to -R and -w options.
	Postprocess error output.
	* tests/testsuite.at (SVN_REPO_INIT): Quote arguments in SVN post-commit
	hook, both in the m4 and shell layers.
	Include new files.

2014-02-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement SVN sync.

	* src/Makefile.am (websync_SOURCES): Add new files.
	* src/svn.c: New file.
	* src/cmdline.opt: --stderr implies -l debug.
	* src/cvs.c: Update call to runcmd.
	* src/runcmd.c (runcmd): Take two arguments, return status code.
	If the 2nd argument is given, return in the memory location pointed
	to by it the file descriptor connected to the program's stdout.
	(runcmd_wait): New function.
	* src/websync.c (vcs_tab): Add svn
	(main): Return 0 on success.
	* src/websync.h (runcmd): Change prototype.
	* tests/Makefile.am: Add new tests.
	* tests/testsuite.at: Likewise.
	* tests/svncom00.at: New file.
	* tests/svnimp.at: New file.

2014-02-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove unused parameters.

	Fix a typo in the docstring

	Add documentation framework

	Test three basic CVS synchronization cases.

	* tests/Makefile.am: Add new files.
	* tests/atlocal.in (BINDIR): New variable.
	* tests/cvscom00.at: New file.
	* tests/cvscom01.at: New file.
	* tests/cvscom02.at: New file.
	* tests/cvsimp.at: New file.
	* tests/doinstrc.at: Fix copyright year.
	* tests/testsuite.at (AT_VCS_PREREQ)
	(CVS_REPO_INIT,CVS_COM_INIT): New macros.

	Add test framework

	* Makefile.am (SUBDIRS): Add test.
	* configure.ac: Initialize test framework.
	* tests/.gitignore: New file.
	* tests/Makefile.am: New file.
	* tests/atlocal.in: New file.
	* tests/doinstrc.at: New file.
	* tests/testsuite.at: New file.

	New options: detach, sleep and message.

	The former two help avoid deadlocking which occurs when cvs
	is trying to acquire the lock held by the commit process that
	invoked websync.  The latter defines the message to display to
	the remote party before doing the sync.

	* src/config.c (cfg_detach, cfg_sleep)
	(cfg_message): New globals.
	(websync_kw): New statements: detach, sleep, message.
	* src/cvs.c: Update description.
	* src/websync.c: Handle new options.
	* src/websync.h (cfg_detach, cfg_sleep)
	(cfg_message): New globals.

2014-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Configuration file is optional.

	Also, implement --config-help and --destination-root options.

	Implement per-directory ".doinstrc" files.

	* src/Makefile.am (websync_SOURCES): Add doinstrc.c
	* src/doinstrc.c: New file.
	* src/cmdline.opt: New option --doinstrc.
	* src/cvs.c (cvs_proc): Register each directory for postprocessing.
	* src/websync.c (pathcat): New function.
	(mkfilename): Rewrite using pathcat. Change signature.
	(main): Process .doinstrc files.
	* src/websync.h (DEFAULT_CONFIG_FILE): New define.
	(mkfilename): Change signature.
	(doinstrc, register_directory)
	(flush_doinstrc_files,have_doinstrc): New prototypes.

	Add credits.

	Working CVS synchronization.

	* src/cmdline.opt (cli_log_to_stderr): Temporary variable to hold
	the requested stderr verbosity.
	New option --repository-root.
	* src/config.c (config_finish): Set cfg_repository_root from
	command line, if --repository-root is given.
	* src/cvs.c: Minor changes.
	* src/runcmd.c: Redo signal handling and children cleanup.
	* src/websync.c (repository_root): New variable.
	(mkfilename): Bugfix.
	(main): Reset log_to_stderr.
	* src/websync.h (repository_root): New extern.

	Implement CVS synchronization

	Redo error messaging, implement runcmd.

	Initial commit

Local Variables:
mode: change-log
version-control: never
buffer-read-only: t
End:
