* [PATCH] git-new-workdir: Add -f to force new-workdir in existing directory.
@ 2014-11-13 19:16 Paul Smith
2014-11-13 21:21 ` Junio C Hamano
0 siblings, 1 reply; 2+ messages in thread
From: Paul Smith @ 2014-11-13 19:16 UTC (permalink / raw)
To: git
From: Paul Smith <paul@mad-scientist.net>
Date: Thu, 13 Nov 2014 14:01:34 -0500
Subject: [PATCH] git-new-workdir: Add -f to force new-workdir in existing directory.
Signed-off-by: Paul Smith <psmith@mad-scientist.net>
---
I have an environment I want to use new-workdir for, where the directory
I need to use is pre-created for me and I'm dropped into that directory
and I have no control over this (it's an automated build system). The
directory is empty but git-new-workdir still is unhappy about it. I
added a "-f" flag to allow the user to force git-new-workdir to continue
even if the directory exists. It still bails if there's a .git
directory already, however.
contrib/workdir/git-new-workdir | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/contrib/workdir/git-new-workdir b/contrib/workdir/git-new-workdir
index 75e8b25..a4079c1 100755
--- a/contrib/workdir/git-new-workdir
+++ b/contrib/workdir/git-new-workdir
@@ -10,11 +10,17 @@ die () {
exit 128
}
-if test $# -lt 2 || test $# -gt 3
+if test $# -lt 2 || test $# -gt 4
then
- usage "$0 <repository> <new_workdir> [<branch>]"
+ usage "$0 [-f] <repository> <new_workdir> [<branch>]"
fi
+force=false
+if [ x"$1" = x-f ]
+then
+ force=true
+ shift
+fi
orig_git=$1
new_workdir=$2
branch=$3
@@ -51,7 +57,11 @@ fi
# don't recreate a workdir over an existing repository
if test -e "$new_workdir"
then
- die "destination directory '$new_workdir' already exists."
+ $force || die "destination directory '$new_workdir' already exists."
+ if test -e "$new_workdir/.git"
+ then
+ die "destination directory '$new_workdir/.git' already exists."
+ fi
fi
# make sure the links use full paths
--
2.1.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] git-new-workdir: Add -f to force new-workdir in existing directory.
2014-11-13 19:16 [PATCH] git-new-workdir: Add -f to force new-workdir in existing directory Paul Smith
@ 2014-11-13 21:21 ` Junio C Hamano
0 siblings, 0 replies; 2+ messages in thread
From: Junio C Hamano @ 2014-11-13 21:21 UTC (permalink / raw)
To: Paul Smith; +Cc: git
Paul Smith <paul@mad-scientist.net> writes:
> From: Paul Smith <paul@mad-scientist.net>
> Date: Thu, 13 Nov 2014 14:01:34 -0500
> Subject: [PATCH] git-new-workdir: Add -f to force new-workdir in existing directory.
>
> Signed-off-by: Paul Smith <psmith@mad-scientist.net>
> ---
>
> I have an environment I want to use new-workdir for, where the directory
> I need to use is pre-created for me and I'm dropped into that directory
> and I have no control over this (it's an automated build system). The
> directory is empty but git-new-workdir still is unhappy about it. I
> added a "-f" flag to allow the user to force git-new-workdir to continue
> even if the directory exists. It still bails if there's a .git
> directory already, however.
Is there an easy way to check if the existing directory is really
empty? For one thing, with your patched version, you may be by
mistake overwriting things when "git checkout -f" happens at the
end, even if there weren't any existing ".git/" directory there.
And if you can check that the existing directory is empty, you
perhaps may not even have to protect this behind a "-f" option.
>
> contrib/workdir/git-new-workdir | 16 +++++++++++++---
> 1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/contrib/workdir/git-new-workdir b/contrib/workdir/git-new-workdir
> index 75e8b25..a4079c1 100755
> --- a/contrib/workdir/git-new-workdir
> +++ b/contrib/workdir/git-new-workdir
> @@ -10,11 +10,17 @@ die () {
> exit 128
> }
>
> -if test $# -lt 2 || test $# -gt 3
> +if test $# -lt 2 || test $# -gt 4
> then
> - usage "$0 <repository> <new_workdir> [<branch>]"
> + usage "$0 [-f] <repository> <new_workdir> [<branch>]"
> fi
>
> +force=false
> +if [ x"$1" = x-f ]
> +then
> + force=true
> + shift
> +fi
> orig_git=$1
> new_workdir=$2
> branch=$3
> @@ -51,7 +57,11 @@ fi
> # don't recreate a workdir over an existing repository
> if test -e "$new_workdir"
> then
> - die "destination directory '$new_workdir' already exists."
> + $force || die "destination directory '$new_workdir' already exists."
> + if test -e "$new_workdir/.git"
> + then
> + die "destination directory '$new_workdir/.git' already exists."
> + fi
> fi
>
> # make sure the links use full paths
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-11-13 21:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-13 19:16 [PATCH] git-new-workdir: Add -f to force new-workdir in existing directory Paul Smith
2014-11-13 21:21 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).