On 14 Sep 2001 13:07:35 -0500
cmpilato@collab.net wrote:
> Hey, Mo, you recently submitted a couple of patches to the list here:
>
> (1) Patch to add a --verbose option.
> (2) New files need to appear in diff output by default
>
> Could you possibly re-submit those as plaintext diffs (with log
> messages per the policies in HACKING) instead of binary archives?
> Pretty-please?
>
> Thanks.
My most sincere apologies. I switched to a new GUI email
client and it seems to be doing some base 64 encoding
of a plain text attachment behind my back. I may
have to hack this email client to get it working
properly with the text/plain mime type.
Here are the patches just pasted in, does that work for you?
2001-09-12 Mo DeJong <supermo@bayarea.net>
* subversion/clients/cmdline/README:
* subversion/clients/cmdline/checkout-cmd.c:
* subversion/clients/cmdline/cl.h:
* subversion/clients/cmdline/commit-cmd.c:
* subversion/clients/cmdline/import-cmd.c:
* subversion/clients/cmdline/main.c:
* subversion/clients/cmdline/propdel-cmd.c:
* subversion/clients/cmdline/propset-cmd.c:
Implement --verbose option to complement the existing
--quiet option. Replace "quiet" member of the
svn_cl__opt_state_t struct with a more generic
"verbosity" member, it is set via the --verbose
or --quiet options.
Index: subversion/clients/cmdline/cl.h
===================================================================
--- subversion/clients/cmdline/SVN/text-base/cl.h Wed Sep 12 23:02:28 2001
+++ subversion/clients/cmdline/cl.h Thu Sep 13 00:27:22 2001
@@ -48,6 +48,15 @@
svn_cl__auth_password_opt,
} svn_cl__longopt_t;
+/* Client verbosity */
+typedef enum {
+ svn_cl__verbosity_quiet_opt,
+ svn_cl__verbosity_progress_opt,
+ svn_cl__verbosity_verbose_opt,
+ svn_cl__verbosity_trace_opt,
+} svn_cl__verbosity_t;
+
+
/*** Command dispatch. ***/
@@ -67,8 +76,8 @@
set either of these flags, but will be recursive anyway */
svn_boolean_t recursive;
svn_boolean_t nonrecursive;
- svn_boolean_t quiet;
svn_boolean_t version;
+ svn_cl__verbosity_t verbosity;
svn_boolean_t modified;
apr_array_header_t *args;
/* TODO fixme. This still doesn't handle binary data from a file! */
Index: subversion/clients/cmdline/propdel-cmd.c
===================================================================
--- subversion/clients/cmdline/SVN/text-base/propdel-cmd.c Mon Sep 10 09:51:09 2001
+++ subversion/clients/cmdline/propdel-cmd.c Wed Sep 12 23:53:47 2001
@@ -58,7 +58,7 @@
{
svn_stringbuf_t *target = ((svn_stringbuf_t **) (targets->elts))[i];
SVN_ERR (svn_wc_prop_set (pname, NULL, target, pool));
- if (! opt_state->quiet)
+ if (opt_state->verbosity != svn_cl__verbosity_quiet_opt)
printf ("property `%s' deleted from %s.\n", pname->data, target->data);
}
Index: subversion/clients/cmdline/checkout-cmd.c
===================================================================
--- subversion/clients/cmdline/SVN/text-base/checkout-cmd.c Mon Sep 10 09:51:09 2001
+++ subversion/clients/cmdline/checkout-cmd.c Wed Sep 12 23:56:01 2001
@@ -117,8 +117,12 @@
return err;
err = svn_client_checkout (NULL, NULL,
- opt_state->quiet ? NULL : trace_editor,
- opt_state->quiet ? NULL : trace_edit_baton,
+ (opt_state->verbosity ==
+ svn_cl__verbosity_quiet_opt)
+ ? NULL : trace_editor,
+ (opt_state->verbosity ==
+ svn_cl__verbosity_quiet_opt)
+ ? NULL : trace_edit_baton,
auth_obj,
repos_url,
local_dir,
Index: subversion/clients/cmdline/import-cmd.c
===================================================================
--- subversion/clients/cmdline/SVN/text-base/import-cmd.c Mon Sep 10 09:51:08 2001
+++ subversion/clients/cmdline/import-cmd.c Thu Sep 13 00:00:50 2001
@@ -130,8 +130,12 @@
pool));
SVN_ERR (svn_client_import (NULL, NULL,
- opt_state->quiet ? NULL : trace_editor,
- opt_state->quiet ? NULL : trace_edit_baton,
+ (opt_state->verbosity ==
+ svn_cl__verbosity_quiet_opt)
+ ? NULL : trace_editor,
+ (opt_state->verbosity ==
+ svn_cl__verbosity_quiet_opt)
+ ? NULL : trace_edit_baton,
auth_obj,
path,
url,
Index: subversion/clients/cmdline/README
===================================================================
--- subversion/clients/cmdline/SVN/text-base/README Mon Sep 10 09:51:14 2001
+++ subversion/clients/cmdline/README Thu Sep 13 01:24:49 2001
@@ -98,11 +98,6 @@
client.
-? -h -H --help Help.
-
- -V --verbose [ KEY ] [quiet|progress|verbose|trace]
- Determines the level of spewage that the
- client gives (progress is the default,
- --verbose without arg defaults to verbose)
-D --date DATESPEC Like "cvs cmd -D DATESPEC"
@@ -140,11 +135,16 @@
-L --line-conversion GLOB Do line-end conversion for files matching GLOB.
+ -q --quiet Spew as little information as possible
+ while processing a subcommand.
+
+ -V --verbose Spew a more verbose description
+ while processing a subcommand.
+
-- End of option processing
* Aliases (shorthand for commonly used options and option combinations)
- -q --quiet alias for --verbose=quiet
-T --text-defaults GLOB alias for '-L GLOB -K GLOB'
Index: subversion/clients/cmdline/main.c
===================================================================
--- subversion/clients/cmdline/SVN/text-base/main.c Wed Sep 12 23:02:57 2001
+++ subversion/clients/cmdline/main.c Thu Sep 13 01:23:02 2001
@@ -181,6 +181,7 @@
{"help", 'h', 0},
{"message", 'm', 1},
{"quiet", 'q', 0},
+ {"verbose", 'V', 0},
{"recursive", svn_cl__recursive_opt, 0},
{"nonrecursive", 'n', 0},
{"revision", 'r', 1},
@@ -216,6 +217,7 @@
svn_cl__init_feedback_vtable (pool);
memset (&opt_state, 0, sizeof (opt_state));
opt_state.revision = SVN_INVALID_REVNUM;
+ opt_state.verbosity = svn_cl__verbosity_progress_opt;
/* No args? Show usage. */
if (argc <= 1)
@@ -259,12 +261,16 @@
break;
case 'v':
opt_state.version = TRUE;
+ /* fall through and print version info in help subcommand */
case 'h':
case '?':
opt_state.help = TRUE;
break;
case 'q':
- opt_state.quiet = TRUE;
+ opt_state.verbosity = svn_cl__verbosity_quiet_opt;
+ break;
+ case 'V':
+ opt_state.verbosity = svn_cl__verbosity_verbose_opt;
break;
case svn_cl__xml_file_opt:
opt_state.xml_file = svn_stringbuf_create (opt_arg, pool);
Index: subversion/clients/cmdline/commit-cmd.c
===================================================================
--- subversion/clients/cmdline/SVN/text-base/commit-cmd.c Mon Sep 10 09:51:11 2001
+++ subversion/clients/cmdline/commit-cmd.c Wed Sep 12 23:59:22 2001
@@ -105,8 +105,12 @@
/* Commit. */
SVN_ERR (svn_client_commit (NULL, NULL,
- opt_state->quiet ? NULL : trace_editor,
- opt_state->quiet ? NULL : trace_edit_baton,
+ (opt_state->verbosity ==
+ svn_cl__verbosity_quiet_opt)
+ ? NULL : trace_editor,
+ (opt_state->verbosity ==
+ svn_cl__verbosity_quiet_opt)
+ ? NULL : trace_edit_baton,
auth_obj,
targets,
message,
Index: subversion/clients/cmdline/propset-cmd.c
===================================================================
--- subversion/clients/cmdline/SVN/text-base/propset-cmd.c Mon Sep 10 09:51:10 2001
+++ subversion/clients/cmdline/propset-cmd.c Wed Sep 12 23:54:19 2001
@@ -68,7 +68,7 @@
svn_stringbuf_t *target = ((svn_stringbuf_t **) (targets->elts))[i];
SVN_ERR (svn_wc_prop_set (propname, propval, target, pool));
- if (! opt_state->quiet)
+ if (opt_state->verbosity != svn_cl__verbosity_quiet_opt)
printf ("property `%s' set on %s.\n", propname->data, target->data);
}
(Note: There is a missing call to apr_file_close in
case the first open worked. I figured I would just
send that fix later)
2001-09-12 Mo DeJong <supermo@bayarea.net>
* subversion/clients/cmdline/diff.c:
Include a newly added file in the diff output
by creating an empty file in the SVN dir before
exec'ing diff.
Index: ./subversion/clients/cmdline/diff.c
===================================================================
--- ./subversion/clients/cmdline/SVN/text-base/diff.c Mon Sep 10 09:51:09 2001
+++ ./subversion/clients/cmdline/diff.c Thu Sep 13 02:53:00 2001
@@ -108,6 +108,7 @@
svn_stringbuf_t *pristine_copy_path;
svn_boolean_t text_is_modified = FALSE;
const char **args;
+ svn_boolean_t pristine_existed;
int i = 0;
apr_file_t *outhandle = NULL;
@@ -126,6 +127,26 @@
/* Get a PRISTINE_COPY_PATH to compare against. */
SVN_ERR (svn_client_file_diff (path, &pristine_copy_path, pool));
+ /* If the PRISTINE_COPY_PATH file does not exist the diff will fail.
+ Create an empty file so the generated patch will add the new file */
+
+ status = apr_file_open (&outhandle, pristine_copy_path->data, APR_READ,
+ APR_OS_DEFAULT, pool);
+ if (!status)
+ pristine_existed = TRUE;
+ else
+ {
+ pristine_existed = FALSE;
+ status = apr_file_open (&outhandle, pristine_copy_path->data,
+ APR_READ | APR_CREATE,
+ APR_OS_DEFAULT, pool);
+ if (status)
+ return svn_error_create (status, 0, NULL, pool,
+ "error: can't touch pristine copy");
+ else
+ apr_file_close (outhandle);
+ }
+
/* Get an apr_file_t representing stdout, which is where we'll have
the diff program print to. */
status = apr_file_open_stdout (&outhandle, pool);
@@ -171,6 +192,14 @@
makes use of the two paths, instead of just blindly running
SVN_CLIENT_DIFF.
*/
+
+ if (!pristine_existed)
+ {
+ apr_file_remove (pristine_copy_path->data, pool);
+ if (status)
+ return svn_error_create (status, 0, NULL, pool,
+ "error: can't delete tmp pristine copy");
+ }
return SVN_NO_ERROR;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:41 2006