From: Eric Wong <normalperson@yhbt.net>
To: "David D. Kilzer" <ddkilzer@kilzer.net>
Cc: git@vger.kernel.org
Subject: Re: [RFC PATCH] git-svn info: implement info command
Date: Sat, 17 Nov 2007 14:54:02 -0800 [thread overview]
Message-ID: <20071117225402.GC28755@muzzle> (raw)
In-Reply-To: <1194884349-11504-1-git-send-email-ddkilzer@kilzer.net>
"David D. Kilzer" <ddkilzer@kilzer.net> wrote:
> Implement "git-svn info" for files and directories based on the "svn info"
> command. Note that the -r/--revision argument is not supported yet.
>
> Added 18 tests in t/t9117-git-svn-info.sh.
>
> Signed-off-by: David D. Kilzer <ddkilzer@kilzer.net>
> ---
>
> Looking for feedback on this patch. Specifically, I'm looking for insight
> for the two FIXME comments in the cmd_info() function added to git-svn.
> (I can't help but think I'm missing a plumbing command or a basic concept.
> Pointers to code, web pages or man pages are welcome.)
>
> Note that I've tried to cover all the bases that "svn info" does (by using
> tests), except supporting the -r/--revision argument.
Hi David,
Wow. I can honestly say I've never even noticed the "Schedule:" field
in `svn info'. I would've been perfectly happy to accept an
implementation of `git svn info' without that :)
> I've also tried to be aggressive in extracting common code into functions.
I like it, but this should be a separate patch.
> +sub canonicalize_path {
> + my ($path) = @_;
> + my $dotSlashAdded = 0;
camelCase variables requires more time for the brain to parse (they're
easier to write, but take more time to read), please use snake_case like
the rest of git-svn (and git).
> +sub cmd_info {
> + my $path = canonicalize_path(shift or ".");
> + unless (scalar(@_) == 0) {
> + die "Too many arguments specified\n";
> + }
> +
> + # FIXME: We use a combination of git-diff, git-ls-files and git-cat-file
> + # to divine the state and type of object that was passed in as $path.
> + # There has to be a better way. Note that only $diffStatus is used
> + # beyond setting $isDirectory below.
I agree it's pretty ugly. You can probably expand git-runstatus to do
this. git-commit.sh used to use something like this until git-runstatus
was added. On the other hand, I'd be content if we dropped support
for this info entirely since `git-status' is perfectly good.
IMNSHO, "URL:" and "Repository Root:" and occasionally "Revision:" (on the
top-level directory) would be the only useful things this command would
have to offer.
Being able to run something like `git svn info --url <path>'
to get something like http://svn.foo.org/project/trunk/<path> would be
nice, too.
> +
> + my $diffStatus = (split(' ', command_oneline(qw(diff --cached --name-status --), $path) || ""))[0] || "";
Please wrap lines at 80 characters. I have a hard time following long
lines.
> + my $checksum;
> + # FIXME: We fail to generate the correct checksum for deleted
> + # symlinks here. How do we know if a deleted file was a symlin
git ls-tree HEAD <filename> will show the mode of a deleted file
> @@ -0,0 +1,236 @@
> +#!/bin/sh
> +#
> +# Copyright (c) 2007 David D. Kilzer
> +
> +test_description='git-svn info'
> +
> +. ./lib-git-svn.sh
> +
> +test_expect_success 'setup repository and import' "
> + rm -rf info gitwc svnwc &&
All git tests should start you off on a clean trash/ directory...
> + mkdir info &&
> + cd info &&
> + echo one > file &&
> + ln -s file symlink-file &&
> + mkdir directory &&
> + touch directory/.placeholder &&
> + ln -s directory symlink-directory &&
> + svn import -m 'initial' . $svnrepo &&
> + cd .. &&
> + mkdir gitwc &&
> + cd gitwc &&
> + git-svn init $svnrepo &&
> + git-svn fetch &&
> + cd .. &&
> + svn co $svnrepo svnwc &&
> + touch -c -r svnwc/file gitwc/file &&
> + touch -c -r svnwc/directory gitwc/directory &&
> + touch -c -r svnwc/symlink-file gitwc/symlink-file &&
> + touch -c -r svnwc/symlink-directory gitwc/symlink-directory
Are -r and -c portable? I remember writing test-chmtime to workaround
some arguments for touch not being portable.
> +test_expect_success 'info no arguments' "
> + (cd svnwc; svn info) > expected.info-no-arguments &&
> + (cd gitwc; git-svn info) > actual.info-no-arguments &&
> + diff -u expected.info-no-arguments actual.info-no-arguments
> + "
Can we expect the output of "svn info" to not change between
versions? I know "svn status" has changed between versions of
svn. I'd prefer if we keep the expected.* files hard-coded
in a test directory and compare those instead. Maybe use sed
to substitute placeholders for timestamps..
Also, git-diff can be used against arbitrary files nowadays, no
need to rely on a working diff command in the system :)
> +test_expect_success 'info added-file' "
> + echo two > gitwc/added-file &&
> + cd gitwc &&
> + git add added-file &&
> + cd .. &&
> + cp -p gitwc/added-file svnwc/added-file &&
I can't remember if cp -p is portable, either...
--
Eric Wong
next prev parent reply other threads:[~2007-11-17 22:54 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-12 16:19 [RFC PATCH] git-svn info: implement info command David D. Kilzer
2007-11-17 22:54 ` Eric Wong [this message]
2007-11-21 6:43 ` [PATCH 0/3] Implement git-svn: info David D. Kilzer
2007-11-21 6:43 ` [PATCH 1/3] git-svn: extract reusable code into utility functions David D. Kilzer
2007-11-21 6:43 ` [PATCH 2/3] git-svn info: implement info command David D. Kilzer
2007-11-21 6:43 ` [PATCH 3/3] git-svn: info --url [path] David D. Kilzer
2007-11-21 6:49 ` [PATCH 3/3 v2] " David D. Kilzer
2007-11-21 6:59 ` [PATCH 0/3] Implement git-svn: info David D. Kilzer
2007-11-21 9:18 ` Eric Wong
2007-11-21 9:20 ` Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071117225402.GC28755@muzzle \
--to=normalperson@yhbt.net \
--cc=ddkilzer@kilzer.net \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.