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" 

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 
---
 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= | -u ) []
 'git branch' --unset-upstream []
 'git branch' (-m | -M) [] 
-'git branch' (-d | -D) [-r] ...
+'git branch' (-d | -D) [--dry-run | -n] [-r] ...
 'git branch' --edit-description []
 
 DESCRIPTION
@@ -63,7 +63,9 @@ to happen.
 
 With a `-d` or `-D` option, `` 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