Diff algorithms how
આ પેજ પરનું દરેક diff દૃશ્ય Myers એલ્ગોરિધમ દ્વારા બને છે — Eugene W. Myers ની 1986 ની તકનીક જે બે ટોકન ક્રમ વચ્ચે સૌથી ટૂંકી એડિટ સ્ક્રિપ્ટ O((N+M)D) સમયમાં શોધે છે, જ્યાં D એ એડિટ અંતર છે. આ એલ્ગોરિધમ Longest Common Subsequence સમસ્યાની આસપાસ બનેલ છે, અને એન્જિન ઓપન-સોર્સ jsdiff લાઇબ્રેરીનો ઉપયોગ કરીને સંપૂર્ણપણે તમારા બ્રાઉઝરમાં ચાલે છે.
- Inputs tokenise — સરખામણી કરતાં પહેલાં, એલ્ગોરિધમ દરેક ઇનપુટને ટોકનના ક્રમમાં વિભાજિત કરે છે. પંક્તિ સ્તરની ગ્રેન્યુલારિટી નવી પંક્તિઓ પર વિભાજિત કરે છે; શબ્દ સ્તરની ગ્રેન્યુલારિટી ખાલી જગ્યા અને વિરામચિહ્નોની સીમાઓ પર વિભાજિત કરે છે; અક્ષર સ્તરની ગ્રેન્યુલારિટી દરેક Unicode કોડ પોઇન્ટને તેના પોતાના ટોકન તરીકે ગણે છે.
- Edit graph build — Myers એલ્ગોરિધમ સરખામણીને 2D ગ્રિડમાંથી પસાર થતા માર્ગ તરીકે મોડેલ કરે છે, જ્યાં જમણી તરફ જવાનો અર્થ છે “મૂળમાંથી કાઢી નાખો”, નીચે જવાનો અર્થ છે “બદલેલમાંથી ઉમેરો”, અને કર્ણ દિશામાં જવાનો અર્થ છે “બંનેમાં ટોકન મેળ ખાય છે”. એલ્ગોરિધમ સૌથી ટૂંકો કર્ણ-પ્રચુર માર્ગ શોધે છે.
- LCS extract — સૌથી ટૂંકા માર્ગમાંની કર્ણ ચાલ Longest Common Subsequence ને ટ્રેસ કરે છે — એવા ટોકન જે બંને ઇનપુટમાં એક જ સાપેક્ષ ક્રમમાં દેખાય છે. LCS માંનું દરેક ટોકન “અપરિવર્તિત” છે; બાકીનું બધું કાં તો ઉમેરો છે અથવા કાઢી નાખવાનું છે.
- પૂર્વપ્રક્રિયા વિકલ્પો લાગુ કરો — જો તમે “Ignore case” સક્ષમ કરો, તો LCS પાસ પહેલાં બંને ઇનપુટ લોઅરકેસ કરવામાં આવે છે, જેથી “HELLO” અને “hello” એકસરખા ગણાય. “Ignore whitespace” અનેક ખાલી જગ્યાઓને એકમાં સંકોચે છે. “Trim each line” સરખામણી પહેલાં દરેક પંક્તિની આગળ-પાછળની ખાલી જગ્યા કાઢી નાખે છે.
- Options apply — આઉટપુટ એ જ LCS પરિણામ ત્રણ રીતે દર્શાવાય છે: Side-by-side મૂળને ડાબી બાજુ અને બદલેલને જમણી બાજુ બે-કૉલમ ગ્રિડમાં લાલ અને લીલા પંક્તિ હાઇલાઇટ સાથે દર્શાવે છે. Unified એક જ કૉલમ − અને + ઉપસર્ગ પંક્તિઓ સાથે દર્શાવે છે, જેમ
git diffનું આઉટપુટ. Inline એ જ લખાણ પ્રવાહમાં કાઢી નાખેલને લાલ સ્ટ્રાઇકથ્રૂ તરીકે અને ઉમેરેલને લીલા અન્ડરલાઇન તરીકે દર્શાવે છે. - સારાંશ પટ્ટીની ગણતરી કરો — રેન્ડરિંગ પછી, સાધન ગણે છે કે કેટલા ટોકન ઉમેરાયા, કાઢી નખાયા અને અપરિવર્તિત રહ્યા, પછી અપરિવર્તિત ટોકનનો બે ઇનપુટ લંબાઈમાંની મોટી લંબાઈ સાથેના ગુણોત્તર તરીકે સમાનતાની ગણતરી કરે છે. 100% સમાનતાનો અર્થ છે કે પ્રીપ્રોસેસિંગ પછી ઇનપુટ એકસરખા છે.
Browser diff checker why?
- Git ક્લાયન્ટ વિના કોડ સમીક્ષા — કોઈ રિપો ક્લોન કર્યા વિના, બ્રાન્ચ સ્વિચ કર્યા વિના, કે CI પાઇપલાઇનની રાહ જોયા વિના, config ફાઇલ, SQL માઇગ્રેશન કે શેલ સ્ક્રિપ્ટના બે સંસ્કરણ પેસ્ટ કરો અને જુઓ કે શું બદલાયું. પેર પ્રોગ્રામિંગ દરમિયાન ઝડપી રિવ્યૂ માટે, સામેવાળાએ પોતાનો Git ઇતિહાસ શેર ન કર્યો હોય તેવા કૉન્ટ્રાક્ટર હેન્ડઑફ માટે, અને સંપૂર્ણપણે વર્ઝન કંટ્રોલ પહેલાંના જૂના કોડબેઝ માટે આ સાધન સહાયક છે. Unified દૃશ્ય એવું આઉટપુટ બનાવે છે જે તમે સીધું ચેટ થ્રેડ કે ટિકટમાં કૉપી કરી શકો.
- કરાર અને દસ્તાવેજની રેડલાઇન — શબ્દ-સ્તરનું diff દર્શાવે છે કે કરારના મુસદ્દાઓ વચ્ચે કયા શબ્દો બદલાયા, Word ના Track Changes પેનલ કરતાં વધુ ઝડપથી. પહેલા મુસદ્દામાંથી કલમ A અને અમલમાં મૂકેલી નકલમાંથી કલમ B પેસ્ટ કરો, અને જે વાક્યાંશ ખસ્યો છે તે જ સ્થાને અવેજી લાલ-પર-લીલા રંગે ઝળકી ઊઠે છે. પેરાલીગલ અને પ્રોક્યોરમેન્ટ ટીમો કરાર પર સહી થાય તે પહેલાં, છેલ્લી ઘડીના રેડલાઇન રિવ્યૂમાંથી છૂપાઈને ન નીકળી જાય તેની ખાતરી કરવા આનો ઉપયોગ કરે છે.
- નિબંધ અને મુસદ્દાના સુધારા — પહેલા મુસદ્દાને સંપાદિત સંસ્કરણ સામે સરખાવતા લેખકો બંને નકલો ફરી વાંચ્યા વિના દરેક અવેજી, સમાવેશ અને કાપ જોવા માટે શબ્દ સ્તરની ગ્રેન્યુલારિટી પર સ્વિચ કરી શકે છે. એ જ વર્કફ્લો સ્રોત લખાણ સામે ફેરફારોની તપાસ કરતા અનુવાદકો માટે, કૉપી એડિટે લેખકના અવાજને જાળવી રાખ્યો છે કે કેમ તે તપાસતા સંપાદકો માટે, અને પ્રકાશિત લેખને દાખલ કરેલા મુસદ્દા સામે મેળવતી પત્રકારત્વ ટીમો માટે કામ કરે છે.
- લૉગ અને કૉન્ફિગની સરખામણી — બે સર્વર config સ્નૅપશૉટ, બે cron શેડ્યૂલ, કે બે
ps auxઆઉટપુટ સરખાવતા સિસએડમિન પંક્તિ સ્તરની ગ્રેન્યુલારિટીનો ઉપયોગ કરીને 200-પંક્તિની ફાઇલમાં એક જ બદલેલા પૅરામીટરને સેકન્ડોમાં શોધી શકે છે. તેને Ignore-whitespace વિકલ્પ સાથે જોડો, અને ઘોંઘાટભર્યું માત્ર-સંરેખણ વાળું diff એવા પૅરામીટર ફેરફારો સુધી સંકોચાઈ જાય છે જે ખરેખર મહત્ત્વના છે.
Common applications?
લખાણ diff લેખન, વિકાસ અને સંચાલન કાર્યમાં દરેક સંપાદન ચક્રના અંતે દેખાય છે.
- Pull request રિવ્યૂ: બ્રાન્ચ ચેકઆઉટ કરવાના ઓવરહેડ વિના, મંજૂરી આપતાં પહેલાં તર્કનો ફેરફાર સમજવા માટે બે ફંક્શન અમલીકરણ સાથોસાથ પેસ્ટ કરો.
- Internationalisation QA: અનુવાદકે દાખલ કરેલા હોય તેવા સમાવેશ, બાદબાકી, કે પરિભાષાની અદલાબદલી શોધવા માટે અંગ્રેજી સ્રોત સ્ટ્રિંગને તેના અનુવાદિત સમકક્ષ સામે શબ્દ સ્તરે સરખાવો.
- ઘટના વિશ્લેષણ: આઉટેજ પહેલાં થયેલા કૉન્ફિગરેશન ફેરફારને અલગ પાડવા માટે બે Kubernetes manifest સ્નૅપશૉટ કે બે “docker inspect” આઉટપુટને પંક્તિ સ્તરે diff કરો.
Diff checker example?
પાંચ-પંક્તિની સર્વર config લો. મૂળ: host=localhost, port=5432, dbname=app_db, user=app, password=secret. બદલેલ: host=db.prod.example.com, port=5432, dbname=app_db, user=app_prod, password=secret. પંક્તિ સ્તરની ગ્રેન્યુલારિટી અને Side-by-side દૃશ્ય સાથે, પંક્તિ 1 ડાબી બાજુ લાલ (host=localhost) અને જમણી બાજુ લીલી (host=db.prod.example.com) દર્શાવે છે, પંક્તિ 4 લાલ (user=app) અને લીલી (user=app_prod) દર્શાવે છે, અને પંક્તિ 2, 3 અને 5 બંને બાજુ અપરિવર્તિત રહે છે. સારાંશ પટ્ટી 2 ઉમેરા, 2 બાદબાકી, 3 અપરિવર્તિત, અને 60% સમાનતા નોંધાવે છે — પાંચમાંથી ત્રણ પંક્તિ જળવાઈ. શબ્દ સ્તરની ગ્રેન્યુલારિટી પર સ્વિચ કરો અને diff વધુ કસાઈ જાય છે: માત્ર પંક્તિ 1 અને 4 પર = ની જમણી બાજુનાં મૂલ્યો ઝળકે છે, કી અપરિવર્તિત રહે છે, અને સમાનતા લગભગ 85% સુધી ચઢે છે કારણ કે LCS હવે host, user, અને આસપાસનાં વિરામચિહ્નોને જળવાયેલા ગણે છે.
Upload?
હા. સંપૂર્ણ diff ગણતરી પેજ સાથે લોડ થયેલ ઓપન-સોર્સ jsdiff લાઇબ્રેરીનો ઉપયોગ કરીને ક્લાયન્ટ-સાઇડ ચાલે છે. તમે જે કંઈ ટાઇપ, પેસ્ટ કે સરખાવો છો તે કોઈ સર્વર પર મોકલાતું નથી. તમે જાતે ચકાસી શકો છો: બ્રાઉઝર DevTools ખોલો, Network ટૅબ પર સ્વિચ કરો, લોગ સાફ કરો, Compare ક્લિક કરો, અને ખાતરી કરો કે સરખામણીના પગલા માટે શૂન્ય નેટવર્ક વિનંતીઓ થાય છે.
સમાનતાની ટકાવારીનો શો અર્થ થાય છે?
સમાનતાની ગણતરી અપરિવર્તિત ટોકન / max(મૂળમાંના કુલ ટોકન, બદલેલમાંના કુલ ટોકન) તરીકે થાય છે. 100% સ્કોરનો અર્થ છે કે તમારા પ્રીપ્રોસેસિંગ વિકલ્પો (case folding, whitespace collapsing, line trimming) લાગુ કર્યા પછી બે ઇનપુટ એકસરખા છે. 0% સ્કોરનો અર્થ છે કે ઇનપુટ વચ્ચે કોઈ ટોકન સહિયારું નથી. આ માપદંડ એડિટ અંતરનો આશરે અંદાજ છે — ઝડપી માપ તરીકે ઉપયોગી — ચૌર્ય કે મૌલિકતાનો સ્કોર નથી.
શું હું JSON / YAML / XML ને અર્થપૂર્ણ રીતે diff કરી શકું?
આ સાધનમાં નહીં. આ લખાણ-સ્તરનું diff છે, તેથી JSON કે XML ના માત્ર-whitespace પુનઃફોર્મેટિંગથી પણ ઘણા ફેરફારો દેખાય છે, ભલે ડેટા તાર્કિક રીતે એકસરખો હોય. JSON માં ઑબ્જેક્ટ કી ફરી ગોઠવવી પણ ફેરફાર તરીકે દેખાય છે, ભલે મોટાભાગના પાર્સર કી ક્રમને બિનમહત્ત્વનો ગણે. પાર્સ થયેલા ઑબ્જેક્ટ વૃક્ષોની સરખામણી કરતા અને કી ક્રમ તેમજ ફોર્મેટિંગને અવગણતા સાચા અર્થગત diff માટે, અમે એક સમર્પિત JSON Diff સાધનની યોજના બનાવી રહ્યા છીએ. હાલ માટે, અહીં પેસ્ટ કરતાં પહેલાં બંને ઇનપુટને એક જ ઇન્ડેન્ટેશન અને કી ક્રમમાં સામાન્ય કરો.
યુનિફાઇડ અને સાઇડ-બાય-સાઇડ વ્યૂ વચ્ચે શો ફેર છે?
Side-by-side two columns: original left changed right, removed lines left red highlight, added lines right green highlight. Unchanged lines both columns same row align. Unified single column − prefix red background removed, + prefix green background added — git diff terminal print same. Unified result patch file copy paste code review thread. Side-by-side visual alignment what replaced what matter more.
ડાબી બાજુ મૂળ પેસ્ટ કરો, જમણી બાજુ બદલેલ સંસ્કરણ, એક દૃશ્ય અને ગ્રેન્યુલારિટી પસંદ કરો, અને સરખામણી મિલિસેકન્ડોમાં દેખાય છે. Live મોડ ચાલુ કરો અને તમે કોઈ પણ બાજુ સંપાદન કરો તેમ દરેક કીસ્ટ્રોક પર diff ફરી ચાલે છે. પરિણામને માનક unified .patch ફાઇલ તરીકે ડાઉનલોડ કરો, જેને git apply સીધી જ વાપરે છે. કોઈ અપલોડ નહીં, કોઈ ખાતું નહીં, કોઈ વેન્ડર API key નહીં, કોઈ ક્વોટા નહીં.