]> git.ipfire.org Git - thirdparty/git.git/commitdiff
contrib: remove "git-new-workdir"
authorPatrick Steinhardt <ps@pks.im>
Mon, 12 May 2025 09:20:00 +0000 (11:20 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 12 May 2025 17:55:47 +0000 (10:55 -0700)
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 e32afab7b03 (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>
contrib/workdir/.gitattributes [deleted file]
contrib/workdir/git-new-workdir [deleted file]
t/meson.build
t/t1021-rerere-in-workdir.sh [deleted file]
t/t3000-ls-files-others.sh

diff --git a/contrib/workdir/.gitattributes b/contrib/workdir/.gitattributes
deleted file mode 100644 (file)
index 1f78c5d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/git-new-workdir eol=lf
diff --git a/contrib/workdir/git-new-workdir b/contrib/workdir/git-new-workdir
deleted file mode 100755 (executable)
index 989197a..0000000
+++ /dev/null
@@ -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
index b09c0becb8dd12ece0fcf52220cc0eafaf9a8b09..9206090fedc5b90a3eab3da67a3741fb20854630 100644 (file)
@@ -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',
diff --git a/t/t1021-rerere-in-workdir.sh b/t/t1021-rerere-in-workdir.sh
deleted file mode 100755 (executable)
index 0b89289..0000000
+++ /dev/null
@@ -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
index 13f66fd649d81d9e7c620cf0693a82e041a2711a..b41e7f0daa480dd0cad786166de77d4dfbd307fc 100755 (executable)
@@ -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 &&
        (