Autor Zpráva
Vareee
Profil
Dobrý deň,

mám 2 verzie toho istého systému v php. Systém je pomerne rozsiahli cca. 700 php súborov v rôznych podadresárch. V jednej verzií aj v druhej boli robené zmeny dvomi rôznymi programátormi (skoro som napísal sprosté slovo), samozrejme bez rozumnej dokumentácie.

Nemáte nápad ako porovnať a nájsť rozdiely v týchto verziách systému?

Jediné riešenie ktoré mňa napadlo je prejsť scriptom všetky súbory v jednotlivých systémov, pričom by som vždy zistil veľkosť a dátum úpravy aktuálne kontrolovaného súboru a porovnal to s výsledkom v rámci druhej verzie.. tak by som asi došiel k tomu ktoré súbory boli zmenené ale čo konkrétne v tom súbore bolo zmenené asi nezistím? Fakt sa mi nechce otvárať všetky zmenené súbory a pátrať čo tam prepísal.. mám síce základnú verziu (bez úprav) ale ja by som potreboval tie verzie zjednotiť aj s ich zmenami.

ďakujem za námety.

ps: mám pocit že ku mne sa dostávajú najhoršie úlohy ktoré u nás v práci riešime :)
ps1: pánov ktorý to menili neviem kontkatovať, jeden hladá osvietenie niekde v Singapure a druhý úspešne už týždeň ingoruje telefón aj maily..
Virtus
Profil
To je celkem dost souborů, v první řadě bych vám doporučil přejít na nějaký verzovací systém: GIT, SVN, nejsem žádný extra znalec GITu, ale pokud by se obě verze i se základní převedli do GITu, snad by se dalo nějakým rozumným způsobem na nich udělat diff, který by vám zobrazil co je kde jinak. Další možností, i když ne úplně asi ideální, je jak jste napsal, napsat si script který vám vypíše všechny rozdílné soubory a pak třeba v NetBeans nebo PHPStormu porovnat jejich obsah, tyto editory obsahuje pěkné nástroje pro porovnávání a následně správu porovnávaného kódu.
Osobně bych prvně zkusil ten GIT, pokud je možnost.


Edit:
Pokud bych si do GITu nahrál tedy základní projekt (ten původní ) beze změn, pak bych základní projekt nahradil prvním upraveným projektem a commitnul bych ho jako novou větev do GITu, pak si první upravený projekt nahradil druhým upraveným projektem a opět commitnul jako novou větev do GITu a následně obě nové větve mergnul do té základní, pěkně postupně, tak by za vás GIT měl vyřešit asi většinu problémů, nejen, že vám sám ukáže co kde bylo změněno, ale zároveň Vás upozorní na konflikty, pokud nějaké vznikly, další věc, pokud konflikty nebudou, do kódu projektu nebudete muset ani šáhnout, pokud bude vše logicky fungovat zprávně, tj. oboje úpravy se buď neovlivňují, nebo jsou napsány tak, že jedna s druhou počítá.
preca1
Profil
Na porovnávání rozdílů v souborech existují nástroje, já mam oblíbený Meld (primárně pro Linux). Měl by umět i automatický merge, ale ten sem nikdy nepotřeboval.
Vareee
Profil
Virtus:
Pokud bych si do GITu nahrál tedy základní projekt (ten původní ) beze změn, pak bych základní projekt nahradil prvním upraveným projektem a commitnul bych ho jako novou větev do GITu, pak si první upravený projekt nahradil druhým upraveným projektem a opět commitnul jako novou větev do GITu a následně obě nové větve mergnul do té základní, pěkně postupně, tak by za vás GIT měl vyřešit asi většinu problémů, nejen, že vám sám ukáže co kde bylo změněno, ale zároveň Vás upozorní na konflikty, pokud nějaké vznikly, další věc, pokud konflikty nebudou, do kódu projektu nebudete muset ani šáhnout, pokud bude vše logicky fungovat zprávně, tj. oboje úpravy se buď neovlivňují, nebo jsou napsány tak, že jedna s druhou počítá.

preca1:
Na porovnávání rozdílů v souborech existují nástroje, já mam oblíbený Meld (primárně pro Linux). Měl by umět i automatický merge, ale ten sem nikdy nepotřeboval.

Ďakujem páni za Vaše námety. Skúsim a dám vedieť ako som dopadol. Ak sa to podarí, ušetrili ste mi roky vo vezení pretože tých dvoch bláznov by som inak asi zabil :)
Virtus
Profil
pokud se rozhodnete pro GIT: předpokládám, že už mám vytvořený GIT projekt, ve kterém mám nahranou původní verzi systému v nějaké větvi, třeba devel a nacházím se v rootu projektu - třeba: /var/www/projekt/
příkazy do příkazové řádky
git checkout devel
git branch prvni-uprava
git checkout prvni-uprava
teď nahradím soubory původního projektu, soubory prvního programátora, tedy upravené nějakým způsobem
git add ./
git commit //napíšu komentář k úpravě
git checkout devel //přepne opět na původní projekt
git branch druha-uprava
git checkout druha-uprava
teď nahradím soubory původního projektu, soubory druhého programátora, opět nějak upravené
git add ./
git commit //napíšu komentář k úprav
v tomto momentě mám tedy v repozitáři GITu všechno co potřebuji a můžu začít mergovat, bohužel jak sem říkal, nejsem žádný znalec a dál už si nejsem jistý, ale asi to bude vypadat nějak takhle:
git checkout devel
git merge devel prvni-uprava //tady by asi žádný konflikt vzniknout neměl
git pull
gir merge devel druha-uprava //tady už by konflikt vzniknout mohl, ty budete muset vyřešit v nějakém editoru kódu teda
git pull //a v tomhle momentě bych měl ve větvi devel všechny změny od obou programátorů
Vareee
Profil
Super vďaka, vyzerá to že som to úspešne zvládol

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: