Monday 27 November 2017

Gitattributes Binære Alternativer


Jeg jobber på et kodelager hvor alle utviklere samarbeider med depotet ved hjelp av Windows PC amp-formørkelse som deres IDE. Lageradministratoren har oppsett denne. gitattributes-filen i overordnet katalog med følgende: Jeg leser her at git internt opprettholder objektdatabase for å skrive (commit) lese (kassen) endringene. Gjør dette over innstillingen i. gitattributes kassen koden med CRLF (Windows) linje slutter og filen i depotet blir opprettholdt i CRLF Aktivert Vis alternativet Vis hvite rom i Eclipse IDE viste at alle filendingene var linjemåte (LF) uten vognretur (CR). Kan noen påpeke årsaken til denne oppførselen På et annet lager, har det Betyr dette betyr at alle filer (.java. csv. sql) ville ha CRLF og andre filer ville ha LF line endingsnacho4d: Det er merkelig, fordi git shouldn39t selv vite at det er noen utvidede attributter. Hvis du kunne gjengi det, ville det være verdt å ta opp på git-postlisten. Som det er godt tilpasset på vger. kernel. org-lister, behøver du ikke abonnere på innlegg (folk vil holde deg CC39ed for svar) og er ganske antatt å ikke gi det ganske høye volumet av gitvger. kernel. org-listen. ndash Jan Hudec 28 Jul 11 ​​kl 9:34 Det betyr ganske enkelt at når git inspiserer det faktiske innholdet i filen (det vet ikke at en gitt utvidelse ikke er en binær fil - du kan bruke attributtfilen hvis du vil fortelle det eksplisitt - se mannens sider). Etter å ha inspisert filene innholdet har det sett ting som ikke er i grunnleggende ascii tegn. Å være UTF16, jeg forventer at det vil ha morsomme tegn, så det synes det er binært. Det finnes måter å fortelle git hvis du har internasjonalisering (i18n) eller utvidede tegnformater for filen. Jeg er ikke tilstrekkelig opp på den nøyaktige metoden for å sette det - det kan hende du må RTFullM -) Rediger: Et raskt søk av SO funnet kan-i-make-git-recognize-a-utf-16-fil-som-tekst som skal gi deg noen ledetråder. Du er nesten, men ikke helt feil. Git har inspisert de faktiske filene og har sett 39funny39 tegn der. Men det er ikke quotthinkquot UTF-16 er binært. Det er binært, fordi tekst er definert som ASCII-basert (det er det eneste den innebygde diffen gir nyttige resultater for) og UTF-16 er ikke. Ja, det er en måte å fortelle git å bruke spesiell diff for mønster definerte filer (bruker. gitattributes). ndash Jan Hudec 28 Jul 11 ​​kl 9:27 Jeg burde legge til at 39funny characters39 egentlig betyr nullbyte. ndash Jan Hudec Jul 28 11 på 9:31 Vi har begge rett, men fra forskjellige perspektiver. Vi sier begge at quotGit inspiserer innholdet for å bestemme type. quot vi begge sier at for å gjøre git vet at den skal behandles som UTF16, må brukeren fortelle git via. gitattributes etc. ndash Philip Oakley 28. juli kl 11:34 Hva er Det motsatte av check-attr - er det et set-attr. Jeg opprinnelig tilfeldigvis lagret en fil som UTF-16, da commited og pushed den, og nå ser BitBucket det som UTF-16, selv etter å ha spart det som UTF-8 , begå og presse den igjen. Dette gjør i utgangspunktet mine trekkforespørsler umulige å lese fordi anmeldere må klikke inn i hver enkelt kommentar for å legge til kommentarer. ndash John Zabroski Jan 4 16 kl 16:15 Jeg hadde dette problemet hvor Git GUI og SourceTree var å behandle JavaJS-filer som binære og dermed kunne ikke se forskjell Opprette filoppkalte attributter i. gitinfo-mappen med følgende innhold løst problemet Hvis du vil gjør denne endringen for alle lagre, så kan du legge til attributter fil på følgende sted HOME. configgitattributes Jeg hadde det samme problemet etter redigering av en av mine filer i en ny editor. Viser seg den nye redaktøren brukte en annen koding (Unicode) enn min gamle editor (UTF-8). Så jeg fortalte bare min nye redaktør for å lagre filene mine med UTF-8 og deretter git viste mine endringer ordentlig igjen og så det ikke som en binær fil. Jeg tror problemet var rett og slett at git ikke vet hvordan man kan sammenligne filer med forskjellige kodingstyper. Så kodingstypen du bruker, betyr ikke noe, så lenge det forblir konsistent. Jeg har ikke testet det, men jeg er sikker på om jeg bare hadde begått min fil med den nye Unicode-kodingen, neste gang jeg lagde endringer på den filen, ville det ha vist endringene riktig og ikke oppdaget det som binært, siden da ville det ha har sammenlignet to Unicode-kodede filer, og ikke en UTF-8-fil til en Unicode-fil. Du kan bruke en app som Notisblokk for å enkelt se og endre kodetypen til en tekstfil Åpne filen i Notisblokk og bruk menyen Koding på verktøylinjen. Jeg har nettopp tilbrakt flere timer gjennom alt på denne listen, og prøvde å finne ut hvorfor et av testprosjektene i løsningen ikke var å legge til noen tester til utforskeren. Det viste seg i mitt tilfelle at det på en eller annen måte (sannsynligvis på grunn av en dårlig git fusjon et sted) at VS hadde mistet en referanse prosjektet helt. Det var fortsatt bygningen, men jeg la merke til at den bare bygde avhengighetene. Jeg så da at det ikke viste seg i avhengighetslisten selv, så jeg fjernet og re-added testprosjektet og alle mine tester viste seg endelig. svarte desember 4 14 kl 14:51 Visual Studio er virkelig ikke relevant her. ndash jpaugh Desember 12 16 kl 14:58 Ditt svar 2017 Stack Exchange, Inc Hvis du bruker Git til å samarbeide med andre på GitHub, må du sørge for at Git er riktig konfigurert til å håndtere linjestykker. Hver gang du trykker på retur på tastaturet, setter du faktisk inn et usynlig tegn som kalles en linje som slutter. Historisk har forskjellige operativsystemer håndtert linjestykker annerledes. Når du ser på endringer i en fil, håndterer Git linjestykker på sin egen måte. Siden du samarbeider om prosjekter med Git og GitHub, kan Git produsere uventede resultater hvis du for eksempel jobber på en Windows-maskin, og samarbeidspartneren din har gjort en endring i OS X. Globale innstillinger for linjestykker Git config core. autocrlf-kommandoen brukes til å endre hvordan Git håndterer linjestykker. Det tar et enkelt argument. På OS X passerer du bare innspill til konfigurasjonen. For eksempel: På Windows går du rett og slett i oppfyllelse av konfigurasjonen. For eksempel: På Linux passerer du bare innspill til konfigurasjonen. For eksempel: På OS X og Linux, vil du vanligvis sende inn input for denne innstillingen. På Windows, vil du vanligvis bruke ekte. For eksempel: Per-repository-innstillinger Alternativt kan du konfigurere måten Git håndterer linjeendringer på per depot, ved å konfigurere en spesiell. gitattributes-fil. Denne filen er forpliktet til depotet og overstyrer en persons core. autocrlf-innstilling, og sikrer konsekvent oppførsel for alle brukere, uavhengig av deres Git-innstillinger. Fordelen med en. gitattributes-fil er at linjekonfigurasjonene dine er knyttet til depotet ditt. Du trenger ikke å bekymre deg for om samarbeidspartnere har samme linjeavslutningsinnstillinger som du gjør..Gitattributes-filen må opprettes i roten til depotet og forpliktes som enhver annen fil. Her er et eksempel på filen i GitHub Developers Guide. En. gitattributes-fil ser ut som et bord med to kolonner: Til venstre er filnavnet for Git å matche. Til høyre er linjens sluttkonfigurasjon som Git skal bruke for disse filene. Heres et eksempel. gitattributes file. Du kan bruke den som en mal for dine arkiver: Du vil legge merke til at filene er matchet -.c..sln..png -, separert av et mellomrom, og deretter gitt en innstillingstekst. tekst eolcrlf. binære. Vel gå over noen mulige innstillinger nedenfor. textauto git vil håndtere filene på den måten den synes er best. Dette er et godt standardalternativ. tekst eolcrlf Git vil alltid konvertere linjeendringer til CRLF ved kassen. Du bør bruke dette for filer som må holde CRLF-endinger, selv på OSX eller Linux. For eksempel, her er et Windows-prosjekt som håndhever CRLF-linjestykker. tekst eollf Git vil alltid konvertere linjeendringer til LF ved kassen. Du bør bruke dette for filer som må holde LF-endinger, selv på Windows. For eksempel, her er et prosjekt som håndhever LF line endings. binær Git vil forstå at filene som er spesifisert ikke er tekst, og det bør ikke forsøke å endre dem. Den binære innstillingen er også et alias for - text-diff. Oppdatere et lager etter endring av linjestykker Etter at du har angitt kjernen. autocrlf-alternativet og begått en. gitattributes-fil, kan du oppdage at Git ønsker å forplikte filer som du ikke har endret. På dette punktet er Git ivrig etter å endre linjens slutt på hver fil for deg. Den beste måten å automatisk konfigurere repositorys line endings er å først sikkerhetskopiere filene dine med Git, slette alle filer i lagringsplassen din (unntatt. git-katalogen), og gjenopprett deretter filene samtidig. Lagre dine nåværende filer i Git, slik at ingen av arbeidet ditt går tapt. Fjern hver fil fra Gits-indeksen. Skriv om Git-indeksen for å hente alle nye linjestykker. Legg til alle dine endrede filer tilbake, og lag dem for en forpliktelse. Dette er din sjanse til å inspisere hvilke filer som var uendret. Forbind endringene til depotet ditt.

No comments:

Post a Comment