Come parte di un progetto più ampio, voglio la possibilità di prendere due corpi di testo e passarli a un algoritmo di fusione che restituisce un risultato auto-unito (nei casi in cui le modifiche non sono in conflitto) o genera un errore e (potenzialmente) produce un singolo documento di testo con le modifiche in conflitto evidenziate.Come unire programmaticamente i file di testo con potenziali conflitti (ala git o svn, ecc.)?
Fondamentalmente, voglio solo un modo programmatico per fare quello che internamente ogni sistema di controllo sorgente del pianeta, ma sto avendo difficoltà a trovarlo. Ci sono un sacco di GUI visuali per fare questo genere di cose che dominano i miei risultati di ricerca, ma nessuno di loro sembra rendere facilmente accessibile l'algoritmo di fusione di base. Tutti fanno affidamento su un algoritmo/libreria comune e ben compreso e io non conosco il nome, quindi ho difficoltà a cercarlo? Si tratta di qualche piccola modifica su diff e dovrei cercare librerie diff invece di librerie di unione?
Le librerie Python sarebbero molto utili, ma posso vivere con l'overhead dell'interfaccia con qualche altra libreria (o soluzione a linea di comando) se necessario; questa operazione dovrebbe essere relativamente infrequente.
Le unioni automatiche non sono sicure, perché non hanno alcuna comprensione dell'intenzione dei programmatori (plurale); non c'è garanzia che un file "unito" funziona e tanto meno funziona come previsto da qualcuno. I sistemi di controllo del codice sorgente si allontanano da questo assumendo implicitamente che l'utente in qualche modo riesamini (anche se ciò accada è un'altra domanda). Come useresti i risultati di un'unione automatica? –
In questo caso, non sto unendo il codice, sto sincronizzando i file di testo che potrebbero essere stati modificati mentre non si trovava in contatto con il server. Quando il client offline si riconnette, ho bisogno di confrontare la versione locale con quella del server. I veri conflitti non fusibili saranno rari a causa della progettazione dell'applicazione, ma succederanno occasionalmente e devo solo sapere quando si verificano. Non mi aspetto che l'unione automatica sia perfetta, solo per notificarmi quando non riesce e consentirmi di degradare con garbo senza perdere il contenuto di server o client nel processo. – drewww
Domande come queste sono il motivo per cui adoro StackOverflow. La qualità della community qui è pazzesca! – ehfeng