diff -u -rと patch -p -d コマンド (ディレクトリ単位の操作)
まず、実験の準備
/home/hirasawa/desktop/diff_patch hirasawa@ubu1204:~/desktop/diff_patch$ cat prepare.sh #!/bin/bash for dir in orig_dir revised_dir do mkdir $dir for i in 1a 1b do for j in 2a 2b; do mkdir -p $dir/$i/$j; echo $dir/$i/$j > $dir/$i/$j/$i-$j.txt done done done hirasawa@ubu1204:~/desktop/diff_patch$ hirasawa@ubu1204:~/desktop/diff_patch$ hirasawa@ubu1204:~/desktop/diff_patch$ hirasawa@ubu1204:~/desktop/diff_patch$ find orig_dir revised_dir/ orig_dir orig_dir/1b orig_dir/1b/2a orig_dir/1b/2a/1b-2a.txt orig_dir/1b/2b orig_dir/1b/2b/1b-2b.txt orig_dir/1a orig_dir/1a/2a orig_dir/1a/2a/1a-2a.txt orig_dir/1a/2b orig_dir/1a/2b/1a-2b.txt revised_dir/ revised_dir/1b revised_dir/1b/2a revised_dir/1b/2a/1b-2a.txt revised_dir/1b/2b revised_dir/1b/2b/1b-2b.txt revised_dir/1a revised_dir/1a/2a revised_dir/1a/2a/1a-2a.txt revised_dir/1a/2b revised_dir/1a/2b/1a-2b.txt hirasawa@ubu1204:~/desktop/diff_patch$
通例?に従い、パッチ作成はドットなしでつくってみる
hirasawa@ubu1204:~/desktop/diff_patch$ diff -u -r orig_dir revised_dir >dirWOdot.patch hirasawa@ubu1204:~/desktop/diff_patch$ cat dirWOdot.patch diff -u -r orig_dir/1a/2a/1a-2a.txt revised_dir/1a/2a/1a-2a.txt --- orig_dir/1a/2a/1a-2a.txt 2013-05-23 13:16:29.228669556 +0900 +++ revised_dir/1a/2a/1a-2a.txt 2013-05-23 13:16:29.252669681 +0900 @@ -1 +1 @@ -orig_dir/1a/2a +revised_dir/1a/2a diff -u -r orig_dir/1a/2b/1a-2b.txt revised_dir/1a/2b/1a-2b.txt --- orig_dir/1a/2b/1a-2b.txt 2013-05-23 13:16:29.232669593 +0900 +++ revised_dir/1a/2b/1a-2b.txt 2013-05-23 13:16:29.256669702 +0900 @@ -1 +1 @@ -orig_dir/1a/2b +revised_dir/1a/2b diff -u -r orig_dir/1b/2a/1b-2a.txt revised_dir/1b/2a/1b-2a.txt --- orig_dir/1b/2a/1b-2a.txt 2013-05-23 13:16:29.236669602 +0900 +++ revised_dir/1b/2a/1b-2a.txt 2013-05-23 13:16:29.268669752 +0900 @@ -1 +1 @@ -orig_dir/1b/2a +revised_dir/1b/2a diff -u -r orig_dir/1b/2b/1b-2b.txt revised_dir/1b/2b/1b-2b.txt --- orig_dir/1b/2b/1b-2b.txt 2013-05-23 13:16:29.240669612 +0900 +++ revised_dir/1b/2b/1b-2b.txt 2013-05-23 13:16:29.272669776 +0900 @@ -1 +1 @@ -orig_dir/1b/2b +revised_dir/1b/2b hirasawa@ubu1204:~/desktop/diff_patch$
hirasawa@ubu1204:~/desktop/diff_patch$ cp -pr orig_dir test_dir hirasawa@ubu1204:~/desktop/diff_patch$ hirasawa@ubu1204:~/desktop/diff_patch$ hirasawa@ubu1204:~/desktop/diff_patch$ ls -ltr 合計 36 -rw-rw-r-- 1 hirasawa hirasawa 176 5月 23 12:20 test.patch -rw-rw-r-- 1 hirasawa hirasawa 49 5月 23 12:33 revised.txt -rw-rw-r-- 1 hirasawa hirasawa 16 5月 23 12:33 orig.txt -rw-rw-r-- 1 hirasawa hirasawa 16 5月 23 12:43 test.txt -rwxrwxr-x 1 hirasawa hirasawa 210 5月 23 13:16 prepare.sh drwxrwxr-x 4 hirasawa hirasawa 4096 5月 23 13:16 test_dir drwxrwxr-x 4 hirasawa hirasawa 4096 5月 23 13:16 orig_dir drwxrwxr-x 4 hirasawa hirasawa 4096 5月 23 13:16 revised_dir -rw-rw-r-- 1 hirasawa hirasawa 976 5月 23 13:28 dirWOdot.patch hirasawa@ubu1204:~/desktop/diff_patch$ hirasawa@ubu1204:~/desktop/diff_patch$ patch -p1 test_dir < ./dirWOdot.patch patch: **** File test_dir is not a regular file -- can't patch hirasawa@ubu1204:~/desktop/diff_patch$ patch -p1 -d test_dir < ./dirWOdot.patch patching file 1a/2a/1a-2a.txt patching file 1a/2b/1a-2b.txt patching file 1b/2a/1b-2a.txt patching file 1b/2b/1b-2b.txt
hirasawa@ubu1204:~/desktop/diff_patch$ diff -r test_dir orig_dir diff -r test_dir/1a/2a/1a-2a.txt orig_dir/1a/2a/1a-2a.txt 1c1 < revised_dir/1a/2a --- > orig_dir/1a/2a diff -r test_dir/1a/2b/1a-2b.txt orig_dir/1a/2b/1a-2b.txt 1c1 < revised_dir/1a/2b --- > orig_dir/1a/2b diff -r test_dir/1b/2a/1b-2a.txt orig_dir/1b/2a/1b-2a.txt 1c1 < revised_dir/1b/2a --- > orig_dir/1b/2a diff -r test_dir/1b/2b/1b-2b.txt orig_dir/1b/2b/1b-2b.txt 1c1 < revised_dir/1b/2b --- > orig_dir/1b/2b
hirasawa@ubu1204:~/desktop/diff_patch$ diff -r test_dir revised_dir