Re: [PATCH] branch: add support for --dry-run option
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
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
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
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
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