mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
contrib: remove "git-new-workdir"
The "git-new-workdir" command has been introduced to make it possible to
have a separate working directory in a different place. The command thus
predates git-worktree(1), which is what people use nowadays to create
any such working directory. As such, the script doesn't really have much
of a reason to exist nowadays anymore.
It also doesn't seem like the script is still in use: the last time it
has received an update was in e32afab7b0 (git-new-workdir: don't fail
if the target directory is empty, 2014-11-26), more than a decade ago.
Remove it as well as the tests that depend on it.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
95bc447419
commit
15405cd325
1
contrib/workdir/.gitattributes
vendored
1
contrib/workdir/.gitattributes
vendored
@@ -1 +0,0 @@
|
||||
/git-new-workdir eol=lf
|
||||
@@ -1,105 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
usage () {
|
||||
echo "usage:" $@
|
||||
exit 127
|
||||
}
|
||||
|
||||
die () {
|
||||
echo $@
|
||||
exit 128
|
||||
}
|
||||
|
||||
failed () {
|
||||
die "unable to create new workdir '$new_workdir'!"
|
||||
}
|
||||
|
||||
if test $# -lt 2 || test $# -gt 3
|
||||
then
|
||||
usage "$0 <repository> <new_workdir> [<branch>]"
|
||||
fi
|
||||
|
||||
orig_git=$1
|
||||
new_workdir=$2
|
||||
branch=$3
|
||||
|
||||
# want to make sure that what is pointed to has a .git directory ...
|
||||
git_dir=$(cd "$orig_git" 2>/dev/null &&
|
||||
git rev-parse --git-dir 2>/dev/null) ||
|
||||
die "Not a git repository: \"$orig_git\""
|
||||
|
||||
case "$git_dir" in
|
||||
.git)
|
||||
git_dir="$orig_git/.git"
|
||||
;;
|
||||
.)
|
||||
git_dir=$orig_git
|
||||
;;
|
||||
esac
|
||||
|
||||
# don't link to a configured bare repository
|
||||
isbare=$(git --git-dir="$git_dir" config --bool --get core.bare)
|
||||
if test ztrue = "z$isbare"
|
||||
then
|
||||
die "\"$git_dir\" has core.bare set to true," \
|
||||
" remove from \"$git_dir/config\" to use $0"
|
||||
fi
|
||||
|
||||
# don't link to a workdir
|
||||
if test -h "$git_dir/config"
|
||||
then
|
||||
die "\"$orig_git\" is a working directory only, please specify" \
|
||||
"a complete repository."
|
||||
fi
|
||||
|
||||
# make sure the links in the workdir have full paths to the original repo
|
||||
git_dir=$(cd "$git_dir" && pwd) || exit 1
|
||||
|
||||
# don't recreate a workdir over an existing directory, unless it's empty
|
||||
if test -d "$new_workdir"
|
||||
then
|
||||
if test $(ls -a1 "$new_workdir/." | wc -l) -ne 2
|
||||
then
|
||||
die "destination directory '$new_workdir' is not empty."
|
||||
fi
|
||||
cleandir="$new_workdir/.git"
|
||||
else
|
||||
cleandir="$new_workdir"
|
||||
fi
|
||||
|
||||
mkdir -p "$new_workdir/.git" || failed
|
||||
cleandir=$(cd "$cleandir" && pwd) || failed
|
||||
|
||||
cleanup () {
|
||||
rm -rf "$cleandir"
|
||||
}
|
||||
siglist="0 1 2 15"
|
||||
trap cleanup $siglist
|
||||
|
||||
# create the links to the original repo. explicitly exclude index, HEAD and
|
||||
# logs/HEAD from the list since they are purely related to the current working
|
||||
# directory, and should not be shared.
|
||||
for x in config refs logs/refs objects info hooks packed-refs remotes rr-cache svn reftable
|
||||
do
|
||||
# create a containing directory if needed
|
||||
case $x in
|
||||
*/*)
|
||||
mkdir -p "$new_workdir/.git/${x%/*}"
|
||||
;;
|
||||
esac
|
||||
|
||||
ln -s "$git_dir/$x" "$new_workdir/.git/$x" || failed
|
||||
done
|
||||
|
||||
# commands below this are run in the context of the new workdir
|
||||
cd "$new_workdir" || failed
|
||||
|
||||
# copy the HEAD from the original repository as a default branch
|
||||
cp "$git_dir/HEAD" .git/HEAD || failed
|
||||
|
||||
# the workdir is set up. if the checkout fails, the user can fix it.
|
||||
trap - $siglist
|
||||
|
||||
# checkout the branch (either the same as HEAD from the original repository,
|
||||
# or the one that was asked for)
|
||||
git checkout -f $branch
|
||||
@@ -178,7 +178,6 @@ integration_tests = [
|
||||
't1015-read-index-unmerged.sh',
|
||||
't1016-compatObjectFormat.sh',
|
||||
't1020-subdirectory.sh',
|
||||
't1021-rerere-in-workdir.sh',
|
||||
't1022-read-tree-partial-clone.sh',
|
||||
't1050-large.sh',
|
||||
't1051-large-conversion.sh',
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='rerere run in a workdir'
|
||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success SYMLINKS setup '
|
||||
git config rerere.enabled true &&
|
||||
>world &&
|
||||
git add world &&
|
||||
test_tick &&
|
||||
git commit -m initial &&
|
||||
|
||||
echo hello >world &&
|
||||
test_tick &&
|
||||
git commit -a -m hello &&
|
||||
|
||||
git checkout -b side HEAD^ &&
|
||||
echo goodbye >world &&
|
||||
test_tick &&
|
||||
git commit -a -m goodbye &&
|
||||
|
||||
git checkout main
|
||||
'
|
||||
|
||||
test_expect_success SYMLINKS 'rerere in workdir' '
|
||||
rm -rf .git/rr-cache &&
|
||||
"$SHELL_PATH" "$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" . work &&
|
||||
(
|
||||
cd work &&
|
||||
test_must_fail git merge side &&
|
||||
git rerere status >actual &&
|
||||
echo world >expect &&
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
# This fails because we don't resolve relative symlink in mkdir_in_gitdir()
|
||||
# For the purpose of helping contrib/workdir/git-new-workdir users, we do not
|
||||
# have to support relative symlinks, but it might be nicer to make this work
|
||||
# with a relative symbolic link someday.
|
||||
test_expect_failure SYMLINKS 'rerere in workdir (relative)' '
|
||||
rm -rf .git/rr-cache &&
|
||||
"$SHELL_PATH" "$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" . krow &&
|
||||
(
|
||||
cd krow &&
|
||||
rm -f .git/rr-cache &&
|
||||
ln -s ../.git/rr-cache .git/rr-cache &&
|
||||
test_must_fail git merge side &&
|
||||
git rerere status >actual &&
|
||||
echo world >expect &&
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
@@ -73,25 +73,6 @@ test_expect_success 'ls-files --others handles non-submodule .git' '
|
||||
test_cmp expected1 output
|
||||
'
|
||||
|
||||
test_expect_success SYMLINKS 'ls-files --others with symlinked submodule' '
|
||||
git init super &&
|
||||
git init sub &&
|
||||
(
|
||||
cd sub &&
|
||||
>a &&
|
||||
git add a &&
|
||||
git commit -m sub &&
|
||||
git pack-refs --all
|
||||
) &&
|
||||
(
|
||||
cd super &&
|
||||
"$SHELL_PATH" "$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" ../sub sub &&
|
||||
git ls-files --others --exclude-standard >../actual
|
||||
) &&
|
||||
echo sub/ >expect &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'setup nested pathspec search' '
|
||||
test_create_repo nested &&
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user