Hozzászólások
Kipróbálva az összes említett megoldást, egyik sem tűnik tökéletesnek. (Nem szívózni akarok, csak nem akarok elcseszni egy egész napos melót azzal, hogy nem commitolok be mindent, amit kell.)
Legközelebb a diffstat járhat a megoldáshoz (a maga 76 módosult fájljával), a többiek közül a grep-es megoldás 73 fájlt mutat, az rsync-es pedig 66-ot (hogy ezt honnan szedi, nem tudom, de nem mutatja pl. az újonnan bekerült fájlokat) - bár ezek után nem igazán tudom, hogy melyiknek higyjek.
Hozzá kell tenni, hogy a diff-nél nem használtam az -a kapcsolót, ugyanis van jónéhány (módosult) bináris fájl is.
- A hozzászóláshoz be kell jelentkezni
[quote:e7f92d1e76="algernon"][quote:e7f92d1e76="egmont"]grep '^+++' valami.patch
Ez a modosult fileokat is listazza.
Öööö... miért, nem ez volt a cél? :-)
- A hozzászóláshoz be kell jelentkezni
[quote:c3217f27fa="boobaa"]az rsync-es pedig 66-ot (hogy ezt honnan szedi, nem tudom, de nem mutatja pl. az újonnan bekerült fájlokat)
Hmmm, jogos. Próbáld keresztbe: rsync kapcsolók új/ régi/, és/vagy adj neki --delete kapcsolót is. Továbbá praktikus lehet a -c opció is, egyébként az azonos méretű és időcímkéjű fájlokba nem néz bele hanem azonosnak feltételezi őket.
- A hozzászóláshoz be kell jelentkezni
[quote:01a1a1c879="boobaa"]Kipróbálva az összes említett megoldást, egyik sem tűnik tökéletesnek. (Nem szívózni akarok, csak nem akarok elcseszni egy egész napos melót azzal, hogy nem commitolok be mindent, amit kell.)
Commit, friss checkout máshova, rekurzív diff, és ha van találat, akkor valamit elrontottál, commitolsz még egyet és így tovább... :-D
- A hozzászóláshoz be kell jelentkezni
[quote:1ec6e23c96="egmont"]Commit, friss checkout máshova, rekurzív diff, és ha van találat, akkor valamit elrontottál, commitolsz még egyet és így tovább... :-D
Ez elég ocsmány megoldás lenne, ismerve az SVN true atomic commitját (ellentétben a CVS-sel, ugyebár)... Bár el kell ismerjem, hogy ez a "legbolodbiztosabb" megoldás... :-)
- A hozzászóláshoz be kell jelentkezni
Miután egész nap diffeket bújtam és egy régebben kiadott rendszerhez írt saját változtatásokra kellett ráhegesztenem az új kiadás biztonsági hibajavításait (de csak azokat), nem találom a lényeget.
Adott három könyvtár: régi-saját, új-saját, új. Megvan a patch, ami a régi-saját könyvtárat (összes alkönyvtárában levő összes fájllal) átalakítja úgy, hogy új-saját legyen. (Az új könyvtár az új kiadást tartalmazza, amiből csak részeket kellett átvenni, tehát miután megvan a patch, ez már nem játszik.) A kérdés a következő: hogyan tudom megállapítani (akár a patch, akár a régi-saját és új-saját könyvtárak felhasználásával), hogy melyik fájlok módosultak? Egyetlen fájlnévlistára volna szükségem, ami az új-saját könyvtárban levő, a régi-sajáthoz képest módosult fájlokat tartalmazza.
(Lehet, hogy nagyon láma kérdés, de egész napos heggeszting után 3x végigbújtam a man diff-et, és nem jöttem rá.)
- A hozzászóláshoz be kell jelentkezni
[quote:6268d02e57="boobaa"]A kérdés a következő: hogyan tudom megállapítani (akár a patch, akár a régi-saját és új-saját könyvtárak felhasználásával), hogy melyik fájlok módosultak? Egyetlen fájlnévlistára volna szükségem, ami az új-saját könyvtárban levő, a régi-sajáthoz képest módosult fájlokat tartalmazza.
Rossz helyen kerested, nem diff(1)-ben kellett volna, hanem diffstat(1) -ban :)
diffstat foo.patch, es voila.
- A hozzászóláshoz be kell jelentkezni
[quote:4ff146305c="algernon"]Rossz helyen kerested, nem diff(1)-ben kellett volna, hanem diffstat(1) -ban :)
diffstat foo.patch, es voila.
Mondtam, hogy este van már... Köszönöm szépen! Mentségemre szóljon:
[code:1:4ff146305c]$ find régi-saját | wc -l
3274
$ find új-saját | wc -l
3284
$ find új | wc -l
2557
$ diffstat patch | wc -l
77
$[/code:1:4ff146305c]
Na erre az utolsóra voltam kíváncsi, méginkább a fájlnevekre. Ráment egy egész napom...
- A hozzászóláshoz be kell jelentkezni
Patchek modositasara, meg hasonlokra ajanlom meg a patchutils nevu csomagot (abban az lsdiff az kb hasonlot csinal, mint diffstat, csak picit mas formaban, ami lehet jobban emesztheto bizonyos celokra)
- A hozzászóláshoz be kell jelentkezni
Kérsz a két könyvtárról egy-egy rekurzív directory listát úgy hogy csak a név, idő, méret legyen benne (lehet hogy ehhez sed-elni kell), beleirányítod 2 fájlba és azokat diff eled...
- A hozzászóláshoz be kell jelentkezni
[quote:9d8c3f15bf="mortella"]Kérsz a két könyvtárról egy-egy rekurzív directory listát úgy hogy csak a név, idő, méret legyen benne (lehet hogy ehhez sed-elni kell), beleirányítod 2 fájlba és azokat diff eled...
Ez nem mukodik akkor, ha mtime minden filenal ugyanaz (mert teszemazt ugy lett kicsomagolva, vagy atmasolva valahonnan, hogy nem orzodtek meg az eredeti timestampek).
- A hozzászóláshoz be kell jelentkezni
[quote:2d2f59dbd1="algernon"]Patchek modositasara, meg hasonlokra ajanlom meg a patchutils nevu csomagot (abban az lsdiff az kb hasonlot csinal, mint diffstat, csak picit mas formaban, ami lehet jobban emesztheto bizonyos celokra)
Ennek az a baja, hogy csak unified patch-et eszik, és az új fájlok kijelzésére még mindig nem tudom rávenni...
- A hozzászóláshoz be kell jelentkezni
[quote:2336a69fda="boobaa"][quote:2336a69fda="algernon"]Patchek modositasara, meg hasonlokra ajanlom meg a patchutils nevu csomagot (abban az lsdiff az kb hasonlot csinal, mint diffstat, csak picit mas formaban, ami lehet jobban emesztheto bizonyos celokra)
Ennek az a baja, hogy csak unified patch-et eszik, és az új fájlok kijelzésére még mindig nem tudom rávenni...
Hat alakitsd at a patchet! Arra is van tool patchutils-ban :)
Most nezem, hogy a diff az hulyen csinalja, es ha nincs 1/c, de van 2/c, akkor diff -urNad olyan patchet csinal, amibol az latszik hogy 1/c is volt, csak 1970-01-01 datummal. Ebben az esetben, ezt lehet csinalni:
diff -urNad 1 2 2>&1 | grep -e "^[-+]\{3\} .*1970-01-01 01:00:00.*" | sed -e "s,^.\{4\}\(.*\)1970.*,\1,g"
- A hozzászóláshoz be kell jelentkezni
További két javaslat:
grep '^+++' valami.patch
(üssetek, de nem értem, miért nem kell a pluszt backslaslelni -- közben rájöttem, az az egrep, ami ennyire profi, hogy mást jelent a plusz)
rsync -avn regi/ uj/
(fontos a végén a per jel)
- A hozzászóláshoz be kell jelentkezni
[quote:af6638ab3b="egmont"]További két javaslat:
grep '^+++' valami.patch
Ez a modosult fileokat is listazza. Sot, ugy kb az osszeset.
[quote:af6638ab3b="egmont"]
(üssetek, de nem értem, miért nem kell a pluszt backslaslelni -- közben rájöttem, az az egrep, ami ennyire profi, hogy mást jelent a plusz)
Alap POSIX regexp VS Perl-style regexp :)
[quote:af6638ab3b="egmont"]
rsync -avn regi/ uj/
Na, ez nem jutott eszembe! Jo otlet, es meg egyszeru is :)
- A hozzászóláshoz be kell jelentkezni