[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: SVN keyword replacement

From: Mark Phippard <markphip_at_gmail.com>
Date: Tue, 19 Feb 2019 14:55:02 -0500

On Tue, Feb 19, 2019 at 2:09 PM Daniel Shahaf <d.s_at_daniel.shahaf.name>
wrote:

> Mark Phippard wrote on Tue, 19 Feb 2019 18:30 +00:00:
> > One idea that occurred to me would be adding a new value of %W that is
> > similar to %P except the path is relative to the root of the working
> > copy. Assuming that is generally the root of your project, such as
> > /trunk this would give the sort of path you desire. I do not know if
> > there would be any general objections to a value that varied so easily
> > based on something as arbitrary as the working copy root though. That
> > said, given that keywords are only expanded in the working copy it does
> > not seem unreasonable to hand this decision over to the user.
>
> I'm not a fan of this.

Shrug. I've never seen the point of the entire feature and do not have any
plans to ever use it for any keyword.

  The working copy root can be either above or
> below the usual/customary level for creating the tag: when rolling a
> Subversion release my wcroot may be ^/subversion,
> ^/subversion/branches/1.11.x, or
> ^/subversion/branches/1.11.x/tools/dist. Ultimately, it's a random
> environmental value, like ~/.subversion/config settings. Any workflow
> that diffs these files using anything other 'svn diff' — for example,
> diff(1)
> or rsync — is going to run into the differences. (For example, our release
>

I tend to think "so what". All that means is that we would not be using
this keyword just as we do not use the vast majority of them. We barely use
keywords and do not use custom keywords at all:

$ svn pg -R svn:keywords .
INSTALL - LastChangedDate
README - LastChangedDate
contrib/cgi/mirror_dir_through_svn.cgi - HeadURL LastChangedBy
LastChangedDate LastChangedRevision
contrib/client-side/asvn - HeadURL LastChangedBy LastChangedDate
LastChangedRevision Id
contrib/client-side/diff-wrap.sh - HeadURL LastChangedBy LastChangedDate
LastChangedRevision Id
contrib/client-side/emacs/psvn.el - Id
contrib/client-side/svn-merge-vendor.py - HeadURL Id LastChangedBy
LastChangedDate LastChangedRevision
contrib/client-side/svn_all_diffs.pl - HeadURL LastChangedBy
LastChangedDate LastChangedRevision
contrib/client-side/svn_apply_autoprops.py - HeadURL LastChangedBy
LastChangedDate LastChangedRevision
contrib/client-side/svn_export_empty_files.py - HeadURL LastChangedBy
LastChangedDate LastChangedRevision
contrib/client-side/svn_load_dirs/LICENSE_AFL3.txt - HeadURL Id
LastChangedBy LastChangedDate LastChangedRevision
contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in - HeadURL
LastChangedBy LastChangedDate LastChangedRevision
contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py - HeadURL
Author Date Rev
contrib/client-side/svnmerge/svnmerge-migrate-history.py - HeadURL
LastChangedBy LastChangedDate LastChangedRevision Id
contrib/client-side/svnmerge/svnmerge.README - HeadURL LastChangedBy
LastChangedDate LastChangedRevision Id
contrib/client-side/svnmerge/svnmerge.py - HeadURL LastChangedBy
LastChangedDate LastChangedRevision Id
contrib/client-side/svnmerge/svnmerge.sh - HeadURL LastChangedBy
LastChangedDate LastChangedRevision Id
contrib/hook-scripts/case-insensitive.py - HeadURL Id LastChangedBy
LastChangedDate LastChangedRevision
contrib/hook-scripts/commit-email.pl.in - HeadURL LastChangedBy
LastChangedDate LastChangedRevision
contrib/hook-scripts/detect-merge-conflicts.sh - HeadURL LastChangedBy
LastChangedDate LastChangedRevision Id
contrib/hook-scripts/svn-keyword-check.pl - HeadURL LastChangedBy
LastChangedDate LastChangedRevision
contrib/server-side/add-needs-lock.py - HeadURL LastChangedBy
LastChangedDate LastChangedRevision Id
contrib/server-side/fsfsfixer/fixer/fix-rev.py - Date Revision URL
notes/api-errata/1.10/ra001.txt - Id
notes/api-errata/1.10/svnserve001.txt - Id
notes/api-errata/1.7/ra001.txt - Id
notes/api-errata/1.7/wc001.txt - Id
notes/api-errata/1.7/wc002.txt - Id
notes/api-errata/1.7/wc003.txt - Id
notes/api-errata/1.7/wc004.txt - Id
notes/api-errata/1.7/wc005.txt - Id
notes/api-errata/1.7/wc006.txt - Id
notes/api-errata/1.7/wc007.txt - Id
notes/api-errata/1.8/fs001.txt - Id
notes/api-errata/1.9/fs001.txt - Id
notes/hold - Date
notes/merge-tracking/design.html - date
notes/merge-tracking/func-spec.html - date
notes/merge-tracking/requirements.html - date
notes/repos_upgrade_HOWTO - LastChangedDate
notes/variance-adjusted-patching.html - date
subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c - Id
subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h - Id
subversion/include/private/svn_error_private.h - HeadURL Id LastChangedBy
LastChangedDate LastChangedRevision
tools/backup/hot-backup.py.in - HeadURL LastChangedBy LastChangedDate
LastChangedRevision Id
tools/dev/gen_junit_report.py - Id
tools/dev/iz/find-fix.py - Rev
tools/dev/which-error.py - HeadURL LastChangedDate LastChangedBy
LastChangedRevision
tools/examples/svnlook.py - URL Date Revision
tools/hook-scripts/commit-access-control.cfg.example - Id
tools/hook-scripts/commit-access-control.pl.in - HeadURL LastChangedDate
LastChangedBy LastChangedRevision
tools/hook-scripts/mailer/mailer.conf.example - Id
tools/hook-scripts/mailer/mailer.py - HeadURL LastChangedDate LastChangedBy
LastChangedRevision
tools/hook-scripts/mailer/tests/mailer.conf - Id
tools/hook-scripts/reject-detected-sha1-collisions.sh - Id
tools/hook-scripts/reject-known-sha1-collisions.sh - Id
tools/hook-scripts/svn2feed.py - HeadURL Id LastChangedBy LastChangedDate
LastChangedRevision
tools/hook-scripts/svnperms.conf.example - Id
tools/hook-scripts/svnperms.py - HeadURL LastChangedDate LastChangedBy
LastChangedRevision
tools/po/l10n-report.py - URL Author Date Rev Id
tools/server-side/fsfs-reshard.py - HeadURL Id LastChangedBy
LastChangedDate LastChangedRevision
win-tests.py - HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

I would not spend any effort myself on this feature but if someone wanted
to contribute it, I would not be against it.

There were discussions of this back in 2011/2012, for example, about
> recursing upwards to the nearest path-wise ancestor that has an
> svn:branchroot=yes property set, or the nearest path-wise ancestor that
> is a copyfrom-wise descendant of trunk (i.e., has the same node-id as
> trunk's noderev). [1] This has the advantage that the keyword will be
> expanded in the same way in all working copies, and even in
> mod_dav_svn [2].
>

This would be fine but we also both know that this discussion always just
leads nowhere and will probably never be implemented. I certainly could
not see us adding this property just to support this one single feature.

-- 
Thanks
Mark Phippard
http://markphip.blogspot.com/
Received on 2019-02-19 20:55:26 CET

This is an archived mail posted to the Subversion Users mailing list.