Translations
Info
All page names need to be in English.
en da  de  fr  it  ja  km  nl  ru  zh

Subversion/Old

From TYPO3Wiki
Jump to: navigation, search

<< Back to Developer manuals page

[edit]

notice - This information is outdated

The Introduction section may still be useful for your purpose. Otherwise, see Subversion.


Subversion, short SVN, is a concurrent versioning system, a lot like CVS, but better. The TYPO3 community uses it for collaborative development. On this page you can read about the how and why.

Important Note March 2011

Since March 2011 the TYPO3 project uses Git instead of Subversion for the main repository holding the sourcecode of the TYPO3 Core.

Please follow the introduction to Git instead!

Introduction

TYPO3 has switched from formerly used CVS to subversion. Therefore since mid of 2006 you need to use subversion to make use of TYPO3 source-repository. Subversion has some advantages over CVS and by now is on the way to overcome CVS as the dominant open-source network-transparent version control system.

If you don't know what Source Code Management (or Revision Control) is about at all, you might find this WikiPedia article useful, which helps to understand some basic terms and principles: Revision Control

For more details about subversion, see the book Version Control with Subversion.

The repository of TYPO3 is managed and hosted on the TYPO3 Platform TYPO3 Forge.

You can browse the TYPO3-4.3 Core subversion repository and the TYPO3 Extension Subversion Repository both on forge.typo3.org . If you are a developer, then you can checkout the TYPO3 extension extension_key - replace this by the real name of the extension key files of the extensions you want to have a look at and modify under the tab 'Repository'. But you must not write any changes without a permission from the extension's leaders.

LINUX command line

Use the LINUX command line in a shell console window, via a SSH client or whatever. Get the name of the extension. In this example it is 'extension_key' from the TYPO3 Community Extensions.You can see the extension key of an extension in the Extension Manager. If you want to see only the latest revision, then type

svn co https://svn.typo3.org/TYPO3v4/Extensions/extension_key/trunk extension_key

If you want to have the trunk and also all branches and tagged versions, then type

svn co https://svn.typo3.org/TYPO3v4/Extensions/extension_key extension_key

The latter solution will enable you to modify also former versions and tags without any change to the latest version in trunk. Do not forget to comment your changes in the ChangeLog file of the extension. Otherwise it would be rather hard to guess what the aim of your changes has been.

Subversion clients

There's a list of third-party tools managed at the subversion website (subversion clients). The following lines will nonetheless list some tools which TYPO3-developers have found useful:

Cross-platform

CrossVC XXL (formerly LinCVS). CrossVC XXL is a powerful and easy to use graphical cvs and subversion client. It runs on Linux/Unix, Windows and Mac OS X.

eSvn - a GUI frontend to the Subversion revision system. It runs under Unix-like operating systems (GNU/Linux distributions, FreeBSD, Sun Solaris and others), Mac OS X as well as Windows.

Windows

Under Windows you can use TortoiseSVN, which lets you directly check out modules, update, commit and see differences by right clicking on files and folders within Windows Explorer or another file manager program.

Linux

'svn' subversion Command line Interface (CLI) ;)


Mac OS X

Apple offers a nice open source Aqua client http://www.apple.com/downloads/macosx/development_tools/svnx.html

TYPO3xdev

The TYPO3xdev project has its own space on TYPO3.org [1] where you can find more information.

[1] https://typo3.org/development/participate/typo3xdev/

SSL-Certificate

If you get this error-message when you're checking out: Server certificate verification failed: issuer is not trusted / PROPFIND Anfrage fehlgeschlagen

On Ubuntu 7.10 "Gutsy" you create a cert in this way:
shell script:
#install package
sudo apt-get install ssl-cert

#create SSL-certificate
sudo mkdir /etc/apache/ssl
sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Easiest is to use these two KDE-packages:

  • kdesvn (a GUI for subversion)
  • kgpg (a keyring manager)

Subversion, CVS and TER

Since some of the TYPO3 extensions are developed using 'subversion' or 'CVS' we could already spot the "nasty" '.svn' or 'CVS' folders inside extensions installed from the TER. First of all the '.svn' or 'CVS' folders are not needed if an extension gets uploaded to the TER. But how do we get rid of them? Well, we simply use the command 'svn export' (or 'cvs export') to checkout an export version of our project. An alternative could be to move the '.svn' or 'CVS' folders to somewhere else when uploading the project to the TER. Sure, this is not straightforward, but who said this is gonna be fun ;-)

Installation of the TYPO3 sources

Checkout example for TYPO3 trunk:

svn co https://svn.typo3.org/TYPO3v4/Core/trunk trunk

Installation of older TYPO3 versions

After the installation of the CVS client software TortoiseCVS, you rightclick on the folder into which you want to install the TYPO3 source files. Click the context menu entry 'Check out CVS ...'. Edit the following dialog window like this:

TortoiseCVS

Setting up a TYPO3 development source under Linux

This part assumes that you are ready for using any command mentioned here. They are only documented to save you time in setup of a working CVS version of TYPO3.

Level: expert

We also assume you have a working Linux box with apache, MySQL, and php working perfectly. This covers only the install of TYPO3 from the nightly snapshot available here.

The Linux server used for this example is debian sarge with working TYPO3 3.6.2 installed.

  1. Download the tgz archive to your server
  2. untar it into the desired folder where your TYPO3 source should live.
    • cd my_typo3_source_folder/lost/in/the/deep/folder/tree
    • tar xzf typo3_src-3.7.0-dev_030804.tgz
    • cd typo3_src-3.7.0-dev
  3. Update the CVS source from public CVS, not all folders are under CVS control. The CVS admin folders need to be modified before this step can be completed. This package uses 2 CVS sources from sourceforge.net, we are going to change this on the public CVS pserver.
    • We have to change the value :
      • :ext:typo3@cvs.sourceforge.net:/cvsroot/typo3/
      • into :pserver:anonymous@cvs.sourceforge.net:/cvsroot/typo3
    • find . -name Root -exec vim -E -c "s/:ext:typo3/:pserver:anonymous/" -c 'wq' {} \;
    • cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/typo3 login
    • cvs up
    • cd typo3/ext
      • it's a little more complicated here, because it's not a folder under cvs, but the following commands do the trick:
    • echo "cd \$1/..; pwd; cvs up" > mycvsup
    • chmod a+x mycvsup
    • find . -maxdepth 2 -type d -name CVS -exec ./mycvsup {} \;
    • rm mycvsup

If cvs reports a conflict (C) with some extension here, just check out a new fresh copy from CVS.

  1. cd extension_with_confilct
  2. cvs up -C

If cvs reports something like move away `pi/class.tx_extrepwizard_compilefiles.php'; it is in the way just remove the file and rerun cvs up.

As a good developer you will probably need the kickstarter extension. This extension has changed in TYPO3 3.7.0 to get it:

  1. cd typo3_src-3.7.0-dev/typo3/ext/
  2. cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/typo3xdev co -d kickstarter tx_kickstarter

Next in the TYPO3 BE go to ExtManager and install this excellent extension for which extension key name is kickstarter.

BE extension kickstarter.png

The packages we've tested are already symlinked. Nothing needs to be done with them.

Next you have to follow the installation procedure or upgrade procedure. In the case of a new install, you will need a TYPO3 site base. [Our installation so far has only installed the TYPO3 source.]

TYPO3 CVS install URL

Deleting CVS/.svn folders under Linux

When you work with the CVS or SVN system you will usually have a place in the TYPO3 tree where you develop the files and another place where you check in and out from CVS. When you copy your complete extension folders back to your CVS directory you should not copy the CVS folders inside. This is because the information in the CVS folders is needed by the CVS system.
Make a backup copy of your edited files. Then under Linux you type the following:

cd your-TYPO3-development-folder
find . -type d -name CVS -exec rm -rf {} \;

with SVN:

cd your-TYPO3-development-folder
find . -type d -name .svn -exec rm -rf {} \;

Tag the extension

You can tag the current version of your extension. extension_key is the key of your extension like shown in the EM or TYPO3 TER . This is an example to tag your extension after you have uploaded it into TER under version 2.5.3.

svn copy https://svn.typo3.org/TYPO3v4/Extensions/extension_key/trunk \ 
https://svn.typo3.org/TYPO3v4/Extensions/extension_key/tags/Version-2-5-3 \
--username USERNAME -m "version 2.5.3 from TER"

Add the extension

You should not use this chapter any more. You should register your extension directly on https://forge.typo3.org and then it will be initialized already on svn. You can add your extension to the TYPO3 extension repository at https://svn.typo3.org/TYPO3v4/Extensions/ . This is an example to add the extension with the key 'extension_key'. Make sure you have a folder structure like this:

branches
tags
trunk

Then you must put the files from your extension typo3conf/ext/extension_key under extension_key/trunk. Get the shell's cursor positioned inside of the folder extension_key (change directory to extension_key) and execute

# type in your svn-USERNAME, the console asks you then for the password
svn import https://svn.typo3.org/TYPO3v4/Extensions/extension_key --username USERNAME -m 'initial upload'