summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--quilt.changes5
-rw-r--r--quilt/rename.in18
-rw-r--r--test/rename.test30
3 files changed, 31 insertions, 22 deletions
diff --git a/quilt.changes b/quilt.changes
index 7bf7641..0a3a1f2 100644
--- a/quilt.changes
+++ b/quilt.changes
@@ -1,4 +1,9 @@
-------------------------------------------------------------------
+Thu Jun 9 14:47:13 CEST 2005 - agruen@suse.de
+
+- Additional fixes to the rename command.
+
+-------------------------------------------------------------------
Wed Jun 8 22:28:12 CEST 2005 - agruen@suse.de
- Add rename command from Jean Delvare <khali@linux-fr.org>.
diff --git a/quilt/rename.in b/quilt/rename.in
index 4c5a4aa..4153eef 100644
--- a/quilt/rename.in
+++ b/quilt/rename.in
@@ -34,6 +34,17 @@ Rename the topmost or named patch.
fi
}
+move_file()
+{
+ local old=$1 new=$2 newdir=$(dirname "$2")
+
+ [ -d "$newdir" ] || mkdir -p "$newdir" || return 1
+ mv "$old" "$new" || return 1
+ rmdir -p "$(dirname "$old")" 2> /dev/null
+
+ return 0
+}
+
options=`getopt -o p:h -- "$@"`
if [ $? -ne 0 ]
@@ -89,11 +100,12 @@ fi
if ( is_applied $patch && \
( ! rename_in_db "$patch" "$new_patch" || \
- ! mv "$QUILT_PC/$patch" "$QUILT_PC/$new_patch" ) ) || \
+ ! move_file "$QUILT_PC/$patch" \
+ "$QUILT_PC/$new_patch" ) ) || \
! rename_in_series "$patch" "$new_patch" || \
( [ -e "$(patch_file_name $patch)" ] && \
- ! mv "$(patch_file_name $patch)" \
- "$(patch_file_name $new_patch)" )
+ ! move_file "$(patch_file_name $patch)" \
+ "$(patch_file_name $new_patch)" )
then
printf $"Renaming of patch %s to %s failed\n" \
"$(print_patch $patch)" \
diff --git a/test/rename.test b/test/rename.test
index c8cf146..9ed794b 100644
--- a/test/rename.test
+++ b/test/rename.test
@@ -19,26 +19,12 @@
$ quilt series -v
> = %{P}original-name.diff
- $ ls -1 .pc
- > applied-patches
- > original-name.diff
-
- $ cat .pc/applied-patches
- > original-name.diff
-
$ quilt rename _tmp_name.diff
> Patch %{P}original-name.diff renamed to %{P}_tmp_name.diff
$ quilt series -v
> = %{P}_tmp_name.diff
- $ ls -1 .pc
- > _tmp_name.diff
- > applied-patches
-
- $ cat .pc/applied-patches
- > _tmp_name.diff
-
$ quilt pop
> Removing patch %{P}_tmp_name.diff
> Restoring announce.txt
@@ -48,8 +34,6 @@
$ quilt series -v
> %{P}_tmp_name.diff
- $ ls -1 .pc
-
$ quilt rename -p random_name.diff final.name.diff
> Patch random_name.diff is not in series
@@ -59,11 +43,19 @@
$ quilt rename -p _tmp_name.diff _tmp_name.diff
> Patch %{P}_tmp_name.diff exists already, please choose a different name
- $ quilt rename -p _tmp_name.diff final.name.diff
- > Patch %{P}_tmp_name.diff renamed to %{P}final.name.diff
+ $ quilt rename -p _tmp_name.diff newsubdir/final.name.diff
+ > Patch %{P}_tmp_name.diff renamed to %{P}newsubdir/final.name.diff
$ quilt series -v
- > %{P}final.name.diff
+ > %{P}newsubdir/final.name.diff
+
+ $ quilt push -q
+ > Applying patch %{P}newsubdir/final.name.diff
+ > Now at patch %{P}newsubdir/final.name.diff
+
+ $ quilt pop -q
+ > Removing patch %{P}newsubdir/final.name.diff
+ > No patches applied
$ cd ..
$ rm -rf d