Kategorie: Versionskontrolle

Wie man ein git submodule wirklich loswird

Hier ein Beispiel wie man ein git submodule wirklich loswird (um danach z.B. im gleichen Pfad aus einem anderen Repository wieder ein neues anzulegen).

git submodule deinit typo3conf/ext/mysubmodule
git rm -rf typo3conf/ext/mysubmodule
rm -rf .git/modules/typo3conf/ext/mysubmodule
[1]
git commit -m "removed submodule mysubmodule"

[1] ohne diesem Schritt kann es zu folgender Fehlermeldung kommen, wenn man dann versucht wieder ein neues submodule im gleichen Pfad anzulegen:
A git directory for 'typo3conf/ext/mysubmodule' is found locally with remote(s):
origin https://github.com/old/mysubmodule.git
If you want to reuse this local git directory instead of cloning again from https://github.com/new/mysubmodule.git use the '--force' option. If the local git directory is not the correct repo or you are unsure what this means choose another name with the '--name' option.

TYPO3 Version 4.2 LTS, 6.2 LTS oder doch gleich CMS 7?

typo3-seven-zero_2c533ba706
TYPO3 CMS 7

TYPO3 CMS 7 wurde vor wenigen Tagen publiziert.
Zeitgleich arbeiten Anwender und Agenturen an teilweise recht aufwendigen Major Upgrades von Version 4.5 LTS auf 6.2 LTS.

Da stellen sich natürlich einige Fragen, die wir hiermit gerne beantworten.

Version 4.5 LTS

4.5 LTS war die erste TYPO3 Version mit Long Term Support (LTS) im Reigen der TYPO3 Produkte. Mehr als 500.000 Installationen weltweit, sowie über 6.000 registrierte Extensions bildeten eine solide Verbreitungsbasis. Mit März 2015 enden nach mehr als 4 Jahren Support & Wartung dieser Version durch die TYPO3 Association.

[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.

git Cheat Sheet

Einen sehr schönen git Cheat Sheet findet man hier:
http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png

Anfrage