Questo sembra essere un problema impossibile, per definizione.
Supponiamo che tu avessi un set di file .txt
, uno per ciascun file .cpp
, contenente i tuoi commenti, separati per ciascuna funzione, naturalmente.
Quindi, quando si scarica una versione più recente del pacchetto, si dovrà comunque affrontare (a) i file sorgente rinominati e (b) le funzioni rinominate all'interno dei file sorgente, per non menzionare (c) i dettagli modificati all'interno di tali funzioni. Quindi avresti ancora lo stesso problema di fusione che hai ora.
Fondamentalmente, i tuoi commenti dipendono dal codice sorgente ovunque li memorizzi: se in /*…*/
all'interno del codice sorgente o al di fuori di esso, in un file di testo con tag ordinato con lo stesso nome del file sorgente. Dovrai sempre riunire nuovamente ogni aggiornamento .
Detto questo, costruisci alcuni strumenti .
-
A filleter , che accetta i file di origine con commenti extra che hai, scrive i commenti su un file di testo o su più file di testo o su un database, rilevando quale funzione e file ciascuno il commento appartiene a e rimuove tali commenti dal file sorgente originale. Quest'ultimo aspetto è importante, perché in questo modo puoi guardare il file sorgente da solo per vedere se qualcuno dei tuoi commenti è stato lasciato indietro e sintonizzare e riscrivi il filleter fino a quando non ha veramente riempito tutto.
-
Un stuffer , che accetta un file sorgente senza commenti aggiuntivi e il / i file / database di testo creati dal filleter e inserisce i commenti nel file sorgente nell'appropriato posto. Se non riesce a trovare dove inserire un commento, allora si supera in un modo o nell'altro e ti lascia fare quel pezzo di lavoro a mano.
Puoi facilmente testare il stuffer filettando il codice sorgente che hai ottenuto e poi riempendolo. Se quello che ottieni è ciò che hai iniziato, funziona tutto.