git-svn: add git svn proplist

This allows one to easily retrieve a list of svn properties from within
git-svn without requiring svn or knowing the URL of a repository.

	* git-svn.perl (%cmd): Add the command `proplist'.
	(&cmd_proplist): New.
	* t/t9101-git-svn-props.sh: Test git svn proplist.

Signed-off-by: Benoit Sigoure <tsuna@lrde.epita.fr>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Benoit Sigoure 2007-10-16 16:36:51 +02:00 committed by Shawn O. Pearce
parent 1515345156
commit 51e057cf80
2 changed files with 38 additions and 1 deletions

View File

@ -135,6 +135,9 @@ my %cmd = (
'propget' => [ \&cmd_propget,
'Print the value of a property on a file or directory',
{ 'revision|r=i' => \$_revision } ],
'proplist' => [ \&cmd_proplist,
'List all properties of a file or directory',
{ 'revision|r=i' => \$_revision } ],
'show-ignore' => [ \&cmd_show_ignore, "Show svn:ignore listings",
{ 'revision|r=i' => \$_revision
} ],
@ -536,7 +539,7 @@ sub cmd_create_ignore {
# get_svnprops(PATH)
# ------------------
# Helper for cmd_propget below.
# Helper for cmd_propget and cmd_proplist below.
sub get_svnprops {
my $path = shift;
my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
@ -583,6 +586,19 @@ sub cmd_propget {
print $props->{$prop} . "\n";
}
# cmd_proplist (PATH)
# -------------------
# Print the list of SVN properties for PATH.
sub cmd_proplist {
my $path = shift;
$path = '.' if not defined $path;
my $props = get_svnprops($path);
print "Properties on '$path':\n";
foreach (sort keys %{$props}) {
print " $_\n";
}
}
sub cmd_multi_init {
my $url = shift;
unless (defined $_trunk || defined $_branches || defined $_tags) {

View File

@ -193,4 +193,25 @@ test_expect_success 'test propget' "
git-svn propget svn:ignore .././deeply/nested | cmp - ../prop.expect
"
cat >prop.expect <<\EOF
Properties on '.':
svn:entry:committed-date
svn:entry:committed-rev
svn:entry:last-author
svn:entry:uuid
svn:ignore
EOF
cat >prop2.expect <<\EOF
Properties on 'nested/directory/.keep':
svn:entry:committed-date
svn:entry:committed-rev
svn:entry:last-author
svn:entry:uuid
EOF
test_expect_success 'test proplist' "
git-svn proplist . | cmp - prop.expect &&
git-svn proplist nested/directory/.keep | cmp - prop2.expect
"
test_done