Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Inny

[GIT] git diff pokazujący zmiany linia pod linią

inny

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 27.07.2020 21:12

W skrócie mam dwa pliki binarne, chce je porównać za pomocą git diff i wszystko jest ok, ale output jest taki:

https://i.imgur.com/7AGe8K3.png

Komenda, której użyłem: 

git diff --color-words=. plik.hex kopia.hex

No i jest beznadziejny bo tak do d*py pokazuje te zmiany w przypadku binarnych plików, że hej....

Chciałbym, żeby pokazywał te zmiany jakby pod spodem, w osobnej linii, bo tak to nie sposób se porównać....

 

O tak chciałbym, żeby to wyglądało:

https://i.imgur.com/04Miufk.png

 

Jak takie coś zrobić? kurde tych przełączników tam tyle, sprawdziłem przeczytałem, ale nie znalazłem. Jakiś pomysł jak to zrobić? Od biedy napisze jakiś skrypt czy coś, ale nie chce mi sie w to bawić póki co.


  • +
  • -
  • 0

#2 Ogen Dogen

    Czempion

  • Power User

Reputacja: 261
Wszechwidzący

  • Postów:837
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 27.07.2020 21:28

Wydaje mi się, że idziesz w złym kierunku. Git nie powstał do obsługi plików binarnych, czemu w ogóle je trzymasz w repozytorium?

Ja bym tu raczej właśnie użył jakiegoś zewnętrznego narzędzia do porównywania takich plików (minuta w google), a gita jeśli już to użył tylko do wyciągnięcia wersji, które chcesz porównać.


  • +
  • -
  • 0

b_350_20_360204_C20008_FFFFFF_000000.png 193.33.176.115:27015

 

94e23d811c.png

 


#3 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 27.07.2020 21:45

To że używam git diffa, nie znaczy, że używam go w repozytorium w ogóle :D

 

Próbowałem wielu różnych kombinacji i drugi sposób jest prawie ideolo, ale on nie ogarnia pojedynczych znaków, tylko całe linie zaznacza tak jak np tu:

https://i.imgur.com/Hlg2APu.png

 

A chciałbym, żeby nie zaznaczał tego co jest niezmienione.

 

git dobrze to rozpoznaje tylko output jest dupny.

 

Skrypt, który używam w sposobie drugim (python3):

from watchgod import watch
import os

os.system("touch plik.hex")
for changes in watch('./plik.memdump'):
	os.system("cp plik.hex kopia.hex")
	os.system("hexdump -C plik.memdump > plik.hex")
	os.system("clear")
	os.system("diff -U 6 kopia.hex plik.hex | colordiff | diff-highlight")
	# os.system("diff-highlight kopia.hex plik.hex")

brzydkie, ale to testy


  • +
  • -
  • 0

#4 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 28.07.2020 06:26

gugl mi podpowiedział, że możesz definiować "jak ma wyświetlać różnicę"

https://superuser.com/a/706286


  • +
  • -
  • 0

#5 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 28.07.2020 08:34

Spróbowałem iiiii no effect :/

Przypuszczam, że ta opcja --color-words=. coś miesza, ale dobrze zaznacza różnice tylko, że w shitowy sposób je prezentuje :/

 

  • +
  • -
  • 0

#6 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 28.07.2020 10:34

Sprawdz http://www.dettus.net/dhex/


  • +
  • -
  • 0

#7 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 28.07.2020 21:54

Sprawdzę. Póki co poradziłem sobie jakoś pokracznie pythonem + bashem, pewnie zamiast pythona dałoby się wykorzystać coś typu 'tail -f' albo 'inotifywait' ale who cares :D

from watchgod import watch
import os

os.system("touch plik.hex")
os.system("touch ascii.hex")
os.system("touch diff_res2")
for changes in watch('./plik.memdump'):
	os.system("./w.sh")
#!/bin/bash
cp plik.hex kopia.hex
cp ascii.hex kopia_ascii.hex
hexdump -e '"%08.8_ax  "' -e' 4/1 "%02x " "  " 4/1 "%02x " "  "  4/1 "%02x " "  " 4/1 "%02x "  ' -e '" \n"' plik.memdump > plik.hex
hexdump -e '" |" 16/1 "%_p" "|\n"' plik.memdump > ascii.hex
clear
diff -U 6 kopia.hex plik.hex | colordiff | diff-highlight > diff_res1
cp diff_res2 diff_res2_old

if cmp -s kopia_ascii.hex ascii.hex; then
	echo "TAKIE SAME"
else
	diff -U 6 kopia_ascii.hex ascii.hex | colordiff | diff-highlight > diff_res2
fi

clear
paste diff_res1 diff_res2


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: inny

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych