Schlagwort: git

[bash] VCS Info im Shell-Prompt

folgender Code in der .bashrc zeigt den VCS-Status (git oder svn) des aktuellen Verzeichnisses an.
Getestet unter Windows8/cygwin, sollte aber auf jeder Plattform funktionieren (wenn eine bash verwendet wird).
export LC_MESSAGES=C ist nötig wenn svn oder git lokalisierte Meldungen ausgeben (ein ewiges Ärgernis).


export LC_MESSAGES=C
GREEN="\[\033[0;32m\]"
LIGHT_GREEN="\[\033[1;32m\]"
GRAY="\[\033[1;30m\]"
LIGHT_BLUE="\[\033[1;34m\]"
LIGHT_GRAY="\[\033[0;37m\]"
COLOR_OFF="\[\e[0m\]"
function prompt_func() {
branch_pattern="\* ([^$IFS]*)"
PS1="$LIGHT_GRAY\u$COLOR_OFF $LIGHT_GREEN\w$COLOR_OFF"
if [[ -d "./.git" && "$(git branch --no-color 2> /dev/null)" =~ $branch_pattern ]]; then
branch="${BASH_REMATCH[1]}"
PS1+=":$LIGHT_BLUE$branch$COLOR_OFF"
elif [[ -d "./.svn" ]]; then
path_pattern="URL: ([^$IFS]*).*Repository Root: ([^$IFS]*).*Revision: ([0-9]*)"
if [[ "$(svn info 2> /dev/null)" =~ ${path_pattern} ]]; then
branch=${BASH_REMATCH[1]##`expr ${BASH_REMATCH[2]}`}
revision="${BASH_REMATCH[3]}"
PS1+=":$LIGHT_BLUE$branch$GRAY@$revision$COLOR_OFF"
fi
fi
PS1+=" "
}
PROMPT_COMMAND=prompt_func

Einen GIT-Klon in ein bestehendes Verzeichnis erstellen

Eigentlich kann man git clone nur in einem leeren Verzeichnis anwenden, deshalb muss einen kleinen Trick anwenden. Zuerst legen wir ein leeres Repository an und initialisieren den Master-Branch.

cd <directory>
git init
git commit --allow-empty -m "init"

Danach setzen wir den Remote auf und holen uns dessen Master-Branch.

git remote add origin <repository>
git fetch --tags origin
git pull origin master

Weitere Branches des remote repository können wir uns dann wie üblich holen.

git checkout -b <local-branch> origin/<branch>

Spass mit Git Episode 1: Wie werden aus 126MB 4.8GB

Oder wie krieg ich alle im SVN getagten Typo3-Releases als typo3_src-Targets

Was brauch ich:

  1. git mit SVN Support
  2. Internet
  3. Genug Platz auf der Platte

Schritt 1: Wir holen und das Typo3-SVN-Repository in der git-Version auf die Platte

cd ~/tmp
mkdir repo
cd repo

git svn init --stdlayout https://svn.typo3.org/TYPO3v4/Core
git svn fetch

Das Ganze dauert je nach Bandbreite etwas. Updates gehen später natürlich schneller.

Die Option –stdlayout gibt an daß das SVN-Repo die Standard-Aufteilung in trunk/branches/tags verwendet.

Die finale Grösse des git-Repositories (im .git Verzeichnis) beträgt nach heutigem Stand ca. 126M. Während des Checkouts kanns schon mal auf > 400MB anwachsen.
git gc machts immer wieder schön klein.

Anfrage