402 Stimmen

Nur Änderungen ohne Leerzeichen hinzufügen

Ich habe meinen Texteditor so eingestellt, dass er nachstehende Leerzeichen beim Speichern einer Datei automatisch abschneidet, und ich trage zu einem Open-Source-Projekt bei, das große Probleme mit nachstehenden Leerzeichen hat.

Jedes Mal, wenn ich versuche, einen Patch einzureichen, muss ich zunächst alle Änderungen, die nur aus Leerzeichen bestehen, von Hand ignorieren, um nur die relevanten Informationen auszuwählen. Nicht nur das, sondern wenn ich git rebase In der Regel stoße ich dadurch auf mehrere Probleme.

Als solches möchte ich in der Lage sein, nur Änderungen ohne Leerzeichen in den Index aufzunehmen, ähnlich wie bei git add -p macht, aber ohne dass ich alle Änderungen selbst vornehmen muss.

Weiß jemand, wie man das macht?

EDIT: I kann nicht die Art und Weise, wie das Projekt funktioniert, zu ändern, und sie haben nach einer Diskussion auf der Mailingliste beschlossen, dies zu ignorieren.

-1voto

cmcginty Punkte 106764

Ich habe ein Git gefunden Pre-Commit-Hook, der Leerzeichen am Ende entfernt . Wenn Sie jedoch andere nicht dazu bringen können, dies zu nutzen, ist es möglicherweise keine gute Lösung.

  #!/bin/sh

  if git-rev-parse --verify HEAD >/dev/null 2>&1 ; then
     against=HEAD
  else
     # Initial commit: diff against an empty tree object
     against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
  fi
  # Find files with trailing whitespace
  for FILE in `exec git diff-index --check --cached $against -- | sed '/^[+-]/d' | sed -r 's/:[0-9]+:.*//' | uniq` ; do
     # Fix them!
     sed -i 's/[[:space:]]*$//' "$FILE"
  done
  exit

-2voto

Kevin Vermeer Punkte 2626

Sie sollten zunächst prüfen, ob das nachgestellte Leerzeichen beabsichtigt ist. Viele Projekte, darunter der Linux-Kernel, Mozilla, Drupal und Kerberos (um nur einige aus der Wikipedia-Seite zum Thema Stil zu nennen) verbieten Leerzeichen am Ende. Aus der Linux-Kernel-Dokumentation:

Besorgen Sie sich einen anständigen Editor und Leerzeichen am Ende der Zeilen.

In Ihrem Fall ist das Problem umgekehrt: frühere Übertragungen (und vielleicht auch aktuelle) haben diese Richtlinie nicht befolgt.

Ich würde wetten, dass niemand wirklich die Leerzeichen am Ende des Textes haben will, und die Behebung des Problems könnte eine willkommene Abwechslung sein. Möglicherweise haben auch andere Benutzer das gleiche Problem wie Sie. Es ist auch wahrscheinlich, dass die Autoren, die die Leerzeichen anhängen, nicht wissen, dass sie es tun.

Anstatt zu versuchen, Git so umzukonfigurieren, dass es das Problem ignoriert, oder die ansonsten wünschenswerte Funktionalität in Ihrem Editor zu deaktivieren, würde ich mit einem Beitrag auf der Projekt-Mailingliste beginnen und das Problem erklären. Viele Editoren (und Git selbst) können so konfiguriert werden, dass sie mit Leerzeichen am Ende umgehen können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X