From c57a1c85a1d77d18e48a341572e4469573c3a286 Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Mon, 13 Jan 2025 00:20:10 +0300 Subject: [PATCH] Add `move-project` Move a project into a subdirectory. --- move-project | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 move-project diff --git a/move-project b/move-project new file mode 100755 index 0000000..d932b07 --- /dev/null +++ b/move-project @@ -0,0 +1,60 @@ +#! /bin/sh + +if [ $# -ne 2 ]; then + echo "Usage: $0 project_name dir" >&2 + exit 1 +fi + +project_name="$1" +dir="$2" + +if [ "$project_name" = "$dir" ]; then + echo "Error: The script $0 cannot yet move a project into a subdirectory of the same name" >&2 + exit 1 +fi + +fix_path() { + config_option="$1" + path="`git config --get $config_option`" + new_path="`echo \"$path\" | sed \"s@$project_name@$dir/$project_name@\"`" + git config "$config_option" "$new_path" +} + +for project_dir in "$HOME"/current/projects "$HOME"/prog/Python \ + "$HOME"/Internet/WWW/htdocs/git.phdru.name; do + if [ "$project_dir" = "$HOME"/Internet/WWW/htdocs/git.phdru.name ]; then + pname="$project_name".git + else + pname="$project_name" + fi + + if [ ! -d "$project_dir/$pname" ]; then + echo "Error: $project_dir/$pname does not exist" >&2 + exit 1 + fi + + if [ -d "$project_dir/$dir" ]; then + echo "Error: $project_dir/$dir already exists" >&2 + exit 1 + fi +done + +for project_dir in "$HOME"/current/projects "$HOME"/prog/Python \ + "$HOME"/Internet/WWW/htdocs/git.phdru.name; do + if [ "$project_dir" = "$HOME"/Internet/WWW/htdocs/git.phdru.name ]; then + pname="$project_name".git + else + pname="$project_name" + fi + + cd "$project_dir" && + mkdir -p "$dir" && + if [ "$project_dir" = "$HOME"/Internet/WWW/htdocs/git.phdru.name ]; then + chmod u=rwX,go=rX "$dir" + fi && + mv "$pname" "$dir" && + cd "$dir/$pname" && + for remote in `git remote`; do + fix_path "remote.$remote.url" + done +done -- 2.39.5