Cosa significa esattamente la parola Patch quando si fa riferimento a "inoltro di una patch"?

StackOverflow https://stackoverflow.com/questions/184272

Domanda

Cosa significa esattamente la parola patch quando si fa riferimento a "invio di una patch"?

L'ho visto molto usato, specialmente nel mondo open source. Cosa significa e cosa comporta esattamente l'invio di una patch?

È stato utile?

Soluzione

È un file con un elenco di differenze tra i file di codice che sono stati modificati. Di solito è nel formato generato facendo un diff -u sui due file. La maggior parte dei sistemi di controllo della versione consente la facile creazione di patch, ma è generalmente nello stesso formato.

Ciò consente di applicare facilmente la modifica del codice alla copia di qualcun altro del codice sorgente utilizzando il comando patch .

Ad esempio:

Diciamo che ho il seguente codice:

<?php
  $foo = 0;
?>

e lo cambio in questo:

<?php
  $bar = 0;
?>

Il file patch potrebbe essere simile al seguente:

Index: test.php
===================================================================
--- test.php    (revision 40)
+++ test.php    (working copy)
@@ -3,7 +3,7 @@
         <?php
-            $foo = 0;
+            $bar= 0;
         ?>

Altri suggerimenti

Richard Jones, uno sviluppatore di Red Hat, ha un piccolo e semplice primer sull'invio di codice a progetti open source che coprono la creazione e l'invio di patch.

Una patch è di solito un file che contiene informazioni su come cambiare qualcosa (molto spesso per correggere un bug, ma potrebbe anche essere un miglioramento). Esistono diversi tipi di patch.

Una patch di codice sorgente contiene informazioni su come modificare uno o più file di codice sorgente. Puoi generarli facilmente usando il comando diff e puoi applicarli usando il comando patch (sui sistemi Linux / UNIX questi comandi sono standard).

Tuttavia, ci sono anche patch binarie. Una patch binaria contiene informazioni sulla necessità di modificare determinati byte all'interno di un file binario. Le patch binarie sono, ovviamente, rare nel mondo OpenSource, ma nei primi tempi dei computer le vedevo molto per modificare i binari spediti (di solito per aggirare un bug).

L'invio di una patch significa che hai risolto localmente qualcosa e ora invii il file a qualcuno, in modo che possa applicare questa patch alla sua copia locale o a una copia pubblica sul Web, in modo che altri utenti possano beneficiare della correzione.

Le patch sono spesso usate anche se hai del codice sorgente che si compila quasi su una certa piattaforma, ma sono necessarie alcune piccole modifiche per farlo compilare lì. Ovviamente potresti prendere la fonte, modificarla e offrire il codice modificato per il download. Ma cosa succede se l'origine originale cambia di nuovo (ad esempio, i bug vengono corretti o sono stati aggiunti piccoli miglioramenti)? Quindi è stato necessario scaricare nuovamente l'origine, applicare nuovamente le modifiche e offrire la nuova versione modificata. È un sacco di lavoro per mantenere aggiornata la tua fonte modificata. Invece di modificare, crei un diff tra l'originale e la tua copia modificata e lo memorizzi sul tuo server. Se ora un utente desidera scaricare e compilare l'app dalla fonte, può prima scaricare l'ultima versione di & amp; la versione più grande della fonte originale, quindi applica la tua patch (così verrà compilata) e ha sempre l'ultima versione, senza che tu debba cambiare la patch. Un problema sorgerà solo se l'origine originale è stata cambiata esattamente in uno dei punti modificati dalla patch. In questo caso il sistema rifiuterà di applicare la patch e dovrà essere creata una nuova patch.

Una patch è un file che contiene tutte le informazioni necessarie per trasformare l'albero dei sorgenti del maintainer nel tuo. Di solito è creato da strumenti come diff o svn diff o git format-patch .

Tradizionalmente, i progetti open source accettano invii da normali schlub sotto forma di patch in modo che non debbano dare ad altri l'accesso ai propri archivi.

Una patch, solitamente sotto forma di un file .patch, è un formato di file flat comune per la trasmissione delle differenze tra due serie di file di codice. Quindi, se stai lavorando a un progetto open source e apporti modifiche al codice ai file e desideri inviarlo al proprietario del progetto per il check-in (di solito perché non hai i diritti di check-in), lo faresti tramite una patch .

WinMerge ha questa funzionalità integrata, così come molti altri strumenti come TortoiseSVN.

Un file patch rappresenta la differenza tra l'origine esistente e l'origine che hai modificato. È il mezzo principale per aggiungere funzionalità o correggere bug in molti progetti.

È possibile creare una patch utilizzando il comando diff (ad esempio).

È quindi possibile inviare questa patch alla mailing list di sviluppo e se ha ricevuto bene, un committer applicherà la patch (applicando così automaticamente le modifiche) e impegnerà il codice.

Le patch vengono applicate usando il comando patch.

Generalmente implica l'invio di un file diff unificato con il changeset aggregato per una funzione. Puoi leggere di più sulle patch su Wikipedia . Diversi sistemi di controllo della versione (svn, git, ecc.) Creeranno per te un file patch basato su un changeset.

 1. n. A temporary addition to a piece of code, usually as a quick-and-dirty

rimedio a un bug esistente o ad un malfunzionamento. Una patch può o non può funzionare e può o meno eventualmente essere incorporato in modo permanente nel programma. Distinto da un diff o mod dal fatto che una patch è generata con mezzi più primitivi rispetto al resto del programma; gli esempi classici sono istruzioni modificate usando la parte anteriore switch di pannello e modifiche apportate direttamente all'eseguibile binario di un programma originariamente scritto in una HLL. Confronta la correzione di una riga.

Vedi l'intera definizione nel file jargon qui

La patch viene anche utilizzata nell'atto di aggiornare i file binari di sistema. Microsoft invia continuamente patch ma non sono codice sorgente. Sono file .msp che installano file binari migliorati. Come per tutti i termini dell'informatica, la patch è sovraccarica.

Ho sempre creduto che il termine significasse una correzione di bug, come una toppa per il ginocchio che mamma indossava i tuoi jeans bucati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top