Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > alt.os.linux > #80263

Re: patch a file with the patch command

From "J.O. Aho" <user@example.net>
Newsgroups alt.os.linux
Subject Re: patch a file with the patch command
Date 2024-08-05 12:43 +0200
Message-ID <lhbom2FnhvqU1@mid.individual.net> (permalink)
References <v8pvb6$iff4$1@dont-email.me>

Show all headers | View raw


On 05/08/2024 09.35, alex wrote:
> Hello everyone.
> 
> I'll show you my file structure right away
> 
> ├── middle
> │   ├── orig
> │   └── revised
> └── orig
> 
> I access the middle directory (the working dir)
> 
> $ cd middle
> 
> Let's examine the contents of the files
> 
> $ cat orig
> ORIG
> 
> $ cat ../orig
> ORIG
> 
> $ cat revised
> REVISED
> 
> Note that the contents of the orig and ../orig files are identical (the 
> two files are identical), but that shouldn't be a big deal.
> 
> Let's create the patches
> 
> $ diff -u orig revised > patch-middle
> $ diff -u ../orig revised > patch-up
> 
> Let's check the created files (the patches)
> 
> $ cat patch-middle
> --- orig    2024-08-02 14:22:59.933683396 +0200
> +++ revised    2024-08-02 10:17:25.108469758 +0200
> @@ -1 +1 @@
> -ORIG
> +REVISED
> 
> $ cat patch-up
> --- ../orig    2024-08-02 14:22:59.937683379 +0200
> +++ revised    2024-08-02 10:17:25.108469758 +0200
> @@ -1 +1 @@
> -ORIG
> +REVISED
> 
> It looks ok.
> 
> Note that for both files (orig and ../orig) the same revision file 
> (revised) was used, but, again, this should not be a big deal.
> 
> Applying the patches
> 
> $ patch < patch-middle
> patching file orig
> 
> $ patch < patch-up
> patching file orig
> Reversed (or previously applied) patch detected!  Assume -R? [n]
> Apply anyway? [n] y
> Hunk #1 FAILED at 1.
> 1 out of 1 hunk FAILED -- saving rejects to file orig.rej
> 
> As you can see with the patch-middle file everything works.
> While with the patch-up file there is something wrong (Hunk #1 FAILED at 
> 1).
> 
> Why?

You are trying to "move" the ../orig to revised, the revised file 
already exists, so not allowed.

This not how you are supposed to do it, a proper way is to do

├── src
     ├── orgcopy
     |   ├── orig
     ├── revisedcopy
          ├── orig

cd src
diff -Nurb orgcopy revisedcopy > from_org_to_revised.patch
cd orgcopy
patch -p1 < ../from_org_to_revised.patch

say you made this change

├── src
     ├── orgcopy
     |   ├── orig
     ├── revisedcopy
          ├── revised

cd src
diff -Nurb orgcopy revisedcopy > from_org_to_revised.patch
cd orgcopy
patch -p1 < ../from_org_to_revised.patch

you would end up with


├── src
     ├── orgcopy
     |   ├── revised
     ├── revisedcopy
          ├── revised

-- 
  //Aho

Back to alt.os.linux | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

patch a file with the patch command alex <1j9448a02@lnx159sneakemail.com.invalid> - 2024-08-05 09:35 +0200
  Re: patch a file with the patch command "J.O. Aho" <user@example.net> - 2024-08-05 12:43 +0200
    Re: patch a file with the patch command alex <1j9448a02@lnx159sneakemail.com.invalid> - 2024-08-05 17:33 +0200
      Re: patch a file with the patch command "J.O. Aho" <user@example.net> - 2024-08-05 23:05 +0200
        Re: patch a file with the patch command alex <1j9448a02@lnx159sneakemail.com.invalid> - 2024-08-06 07:39 +0200
          Re: patch a file with the patch command "J.O. Aho" <user@example.net> - 2024-08-06 08:06 +0200
        Re: patch a file with the patch command alex <1j9448a02@lnx159sneakemail.com.invalid> - 2024-08-06 07:36 +0200

csiph-web