Come applicare la patch su Windows?


16

Dato un file di patch (sorgente), qual è il modo più semplice per applicare questa patch sui file di origine in Windows?

Uno strumento GUI in cui è possibile confrontare visivamente le linee di origine modificate immutate sarebbe fantastico.

4

Patch for Windows è quello che stai cercando.

+7

Si noti che questa patch non funziona correttamente con il controllo dell'account utente Vista.Prova invece il patch.exe di Git-for-windows, che viene fornito con un manifest che risolve il problema. 08 mar. 092009-03-08 21:37:26

+1

@Macke ha ragione! Vedi la mia risposta per un how-to con GIT! 11 lug. 152015-07-11 14:39:01


-2

WinMerge è fantastico.

http://winmerge.org/

+2

Winmerge è ottimo per creare patch, ma non per applicarle. L'OP ha chiesto come applicarlo. Sarebbe una fantastica nuova funzionalità se WinMerge applicasse una patch e mostrasse le modifiche apportate. 28 ott. 112011-10-28 20:05:51

+1

** Trovato nella Guida di WinMerge ** Le patch non possono essere applicate utilizzando WinMerge. Tuttavia, è possibile applicare patch usando lo strumento patch dal progetto GnuWin32, poiché WinMerge produce file di patch compatibili con GNU/diffutils. Inoltre, vedi la domanda precedente. 07 nov. 112011-11-07 19:41:36


14

Grazie a Macke, un buon modo per applicare un file di patch sotto Windows OS sta usando Git. Come ho capito, Git è una soluzione per il controllo delle versioni come SVN.

Ecco una guida per applicare una patch:

  • Prima di tutto, scaricare l'ultima versione di Windows Git Edition qui: GIT
  • Con la, directory cmd prompt di modifica al file di patch e file di patch
  • Ora è possibile utilizzare la seguente riga di comando:
git apply --ignore-space-change --ignore-whitespace --whitespace=nowarn file.patch 

Semplice no?

Grazie Macke


1

Non che dal Git 2.3.3 (Marzo 2015), è possibile utilizzare git apply --unsafe-paths da usare git applicano al di fuori un repo git.

Vedi commit 5244a31 da Junio C Hamano (gitster)

"git apply" non era molto attenti a leggere da, la rimozione, l'aggiornamento e la creazione di percorsi fuori l'albero di lavoro (sotto --index/--cached) o la directory corrente (se usato come un sostituto per Patch GNU).

La documentazione include:

--unsafe-paths: 

Per impostazione predefinita, una patch che colpisce al di fuori della zona di lavoro (o un albero di lavoro Git controllato, o la directory di lavoro corrente quando "git apply" viene usato come la sostituzione della patch GNU) viene rifiutata come errore (o un danno).

Quando git apply viene utilizzato come "migliore patch GNU", l'utente può passare l'opzione --unsafe-paths per ignorare questo controllo di sicurezza.
Questa opzione non ha effetto quando --index o --cached è in uso.

Quindi, se avete git installed, git apply potrebbe aiutare, anche al di fuori di qualsiasi repo git.