Re: [PATCH] branch: add support for --dry-run option

2015-01-22 Thread Michael J Gruber
Scott Schmit schrieb am 22.01.2015 um 02:37:
 On Mon, Jan 19, 2015 at 03:20:51PM +0100, Michael J Gruber wrote:
 Alexander Kuleshov schrieb am 17.01.2015 um 08:35:
 This patch adds support -d/--dry-run option for branch(es) deletion.
 If -d/--dry-run option passed to git branch -d branch..., branch(es)
 will not be removed, instead just print list of branches that are
 to be removed.

 For example:

 $ git branch
 a
 b
 c
 * master

 $ git branch -d -n a b c
 delete branch 'a' (261c0d1)
 delete branch 'b' (261c0d1)
 delete branch 'c' (261c0d1)

 Is there a case where deleting a b c would not delete a b c?
 
 Sure:
 $ cd /tmp/
 $ git init foo
 Initialized empty Git repository in /tmp/foo/.git/
 $ cd foo/
 $ touch .gitignore
 $ git add .gitignore 
 $ git commit -m init
 [master (root-commit) fde5138] init
  1 file changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 .gitignore
 $ git checkout -b a
 Switched to a new branch 'a'
 $ git branch -d a
 error: Cannot delete the branch 'a' which you are currently on.
 $ touch file
 $ git add file
 $ git commit -m 'add file'
 [a e2c2ece] add file
  1 file changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 file
 $ git checkout -b b master
 Switched to a new branch 'b'
 $ git branch -d a
 error: The branch 'a' is not fully merged.
 If you are sure you want to delete it, run 'git branch -D a'.

Yes, and that is something that should go into the commit message. Why
do you want to add --dry-run? Because -d deletes only fully merged
branches.

It should have been there in the 1st place, rather than forcing us to
ask the question that always needs to answered for a patch: What is the
intention? What is it good for?

In this case, we have other means to accomplish the same (--list -v),
and they are more natural if you want get information about the state of
the branches (list verbose) than doing delete dry-run.

Michael
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] branch: add support for --dry-run option

2015-01-21 Thread Scott Schmit
On Mon, Jan 19, 2015 at 03:20:51PM +0100, Michael J Gruber wrote:
 Alexander Kuleshov schrieb am 17.01.2015 um 08:35:
  This patch adds support -d/--dry-run option for branch(es) deletion.
  If -d/--dry-run option passed to git branch -d branch..., branch(es)
  will not be removed, instead just print list of branches that are
  to be removed.
  
  For example:
  
  $ git branch
  a
  b
  c
  * master
  
  $ git branch -d -n a b c
  delete branch 'a' (261c0d1)
  delete branch 'b' (261c0d1)
  delete branch 'c' (261c0d1)
 
 Is there a case where deleting a b c would not delete a b c?

Sure:
$ cd /tmp/
$ git init foo
Initialized empty Git repository in /tmp/foo/.git/
$ cd foo/
$ touch .gitignore
$ git add .gitignore 
$ git commit -m init
[master (root-commit) fde5138] init
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore
$ git checkout -b a
Switched to a new branch 'a'
$ git branch -d a
error: Cannot delete the branch 'a' which you are currently on.
$ touch file
$ git add file
$ git commit -m 'add file'
[a e2c2ece] add file
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file
$ git checkout -b b master
Switched to a new branch 'b'
$ git branch -d a
error: The branch 'a' is not fully merged.
If you are sure you want to delete it, run 'git branch -D a'.

-- 
Scott Schmit


smime.p7s
Description: S/MIME cryptographic signature


Re: [PATCH] branch: add support for --dry-run option

2015-01-19 Thread Michael J Gruber
Alexander Kuleshov schrieb am 17.01.2015 um 08:35:
 This patch adds support -d/--dry-run option for branch(es) deletion.
 If -d/--dry-run option passed to git branch -d branch..., branch(es)
 will not be removed, instead just print list of branches that are
 to be removed.
 
 For example:
 
 $ git branch
 a
 b
 c
 * master
 
 $ git branch -d -n a b c
 delete branch 'a' (261c0d1)
 delete branch 'b' (261c0d1)
 delete branch 'c' (261c0d1)

Is there a case where deleting a b c would not delete a b c?

In other words: What new information does a dry-run give the user, other
than what branch --list -v would give already? (We could need a
shortcut on the latter, but that is a different topic.)

Michael
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] branch: add support for --dry-run option

2015-01-17 Thread Philip Oakley

From: Alexander Kuleshov kuleshovm...@gmail.com

This patch adds support -d/--dry-run option for branch(es) deletion.
If -d/--dry-run option passed to git branch -d branch..., branch(es)


surely s|-d/--dry-run|-n/--dry-run|
-n is the short version of --dryrun. -d is already in use.


will not be removed, instead just print list of branches that are
to be removed.


[...]
--
Philip
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] branch: add support for --dry-run option

2015-01-16 Thread Alexander Kuleshov
This patch adds support -d/--dry-run option for branch(es) deletion.
If -d/--dry-run option passed to git branch -d branch..., branch(es)
will not be removed, instead just print list of branches that are
to be removed.

For example:

$ git branch
a
b
c
* master

$ git branch -d -n a b c
delete branch 'a' (261c0d1)
delete branch 'b' (261c0d1)
delete branch 'c' (261c0d1)

Signed-off-by: Alexander Kuleshov kuleshovm...@gmail.com
---
 Documentation/git-branch.txt | 11 +--
 builtin/branch.c | 13 +
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt
index 311b336..32ea581 100644
--- a/Documentation/git-branch.txt
+++ b/Documentation/git-branch.txt
@@ -16,7 +16,7 @@ SYNOPSIS
 'git branch' (--set-upstream-to=upstream | -u upstream) [branchname]
 'git branch' --unset-upstream [branchname]
 'git branch' (-m | -M) [oldbranch] newbranch
-'git branch' (-d | -D) [-r] branchname...
+'git branch' (-d | -D) [--dry-run | -n] [-r] branchname...
 'git branch' --edit-description [branchname]
 
 DESCRIPTION
@@ -63,7 +63,9 @@ to happen.
 
 With a `-d` or `-D` option, `branchname` will be deleted.  You may
 specify more than one branch for deletion.  If the branch currently
-has a reflog then the reflog will also be deleted.
+has a reflog then the reflog will also be deleted. If passed `-n` or
+`--dry-run` option, branch(es) will be not removed, but show a list of
+branches that are to be removed.
 
 Use `-r` together with `-d` to delete remote-tracking branches. Note, that it
 only makes sense to delete remote-tracking branches if they no longer exist
@@ -83,6 +85,11 @@ OPTIONS
 -D::
Delete a branch irrespective of its merged status.
 
+-n::
+--dry-run::
+   Don't remove the branch(es), but show a list of branches that are
+   to be removed.
+
 -l::
 --create-reflog::
Create the branch's reflog.  This activates recording of
diff --git a/builtin/branch.c b/builtin/branch.c
index d8949cb..4a35a2f 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -61,6 +61,7 @@ static unsigned char merge_filter_ref[20];
 
 static struct string_list output = STRING_LIST_INIT_DUP;
 static unsigned int colopts;
+static int branch_delete_show_only;
 
 static int parse_branch_color_slot(const char *slot)
 {
@@ -255,6 +256,17 @@ static int delete_branches(int argc, const char **argv, 
int force, int kinds,
continue;
}
 
+   if (branch_delete_show_only) {
+   printf(remote_branch
+  ? _(delete remote branch '%s' (%s)\n)
+  : _(delete branch '%s' (%s)\n),
+  bname.buf,
+  (flags  REF_ISBROKEN) ? broken
+  : (flags  REF_ISSYMREF) ? target
+  : find_unique_abbrev(sha1, DEFAULT_ABBREV));
+   continue;
+   }
+
if (delete_ref(name, sha1, REF_NODEREF)) {
error(remote_branch
  ? _(Error deleting remote branch '%s')
@@ -840,6 +852,7 @@ int cmd_branch(int argc, const char **argv, const char 
*prefix)
REF_REMOTE_BRANCH | REF_LOCAL_BRANCH),
OPT_BIT('d', delete, delete, N_(delete fully merged 
branch), 1),
OPT_BIT('D', NULL, delete, N_(delete branch (even if not 
merged)), 2),
+   OPT__DRY_RUN(branch_delete_show_only, N_(dry run)),
OPT_BIT('m', move, rename, N_(move/rename a branch and its 
reflog), 1),
OPT_BIT('M', NULL, rename, N_(move/rename a branch, even if 
target exists), 2),
OPT_BOOL(0, list, list, N_(list branch names)),
-- 
2.3.0.rc0.286.ga3dc223.dirty

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html