Sign in Join
Wiki copytemporary

SVN Migration: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## The Plan
22
33- Repository reorganisation
44 - We won't use cvs2svn to migrate but simply import the whole source into svn to have a clean start.
55 - Lazarus gets its own repository.
66 - The following repositories are planned:
77 - fpc
88 - fpcdocs
99 - lazarus
1010 - contrib
1111 - fpcprojects
1212 - fpcbuild
1313 - html (web page contents)
1414 - logs
1515 - another packages dir: packages/contrib with contains packages which are maintained externally. Something like the Delphi Companion CD. The long term goal is however to flatten the packages hierarchy (packages/base and packages/contrib?), work only with "build units/packages" in each directory. Making e.g. the fcl and fv a usual package as well.
1616 - Stuff in packages/contrib which isn't maintained actively anymore is moved to the contrib repository.
1717- In the first step only ssh based authentification will be possible.
1818- After everything is setup and working, a read-only cvs mirror will be installed.
1919- The SVN project is updated regularily and releases new versions, so it's necessary to have policy when to update the SVN server. The proposed policy is to keep up always with the latest stable svn version.
2020- Each repository gets it's own unix user group so permissions can be easily managed.
2121
2222## Usage
2323
2424svn can be used very similiar to cvs. This wiki page gives some example commands to use the new subversion respository. For a complete list of commands use
2525
26-` svn help`\
27-` svn help <command>`
26+```text
27+ svn help
28+ svn help <command>
29+```
2830
2931or read _the_ svn book can be found here: <http://svnbook.red-bean.com/en/1.1/svn-book.html>.
3032
3133A sandbox repository is setup on idefix so you can test svn if you've an idefix account. The URL of this repository is svn+ssh://svn.freepascal.org/FPC/svn/sandbox1
3234
3335## Repository layout
3436
3537For the repository layout the defacto standard layout with trunk, tags and branches (virtual) directories will be used.
3638
37-`fpc/`\
38-`  trunk/`\
39-`    compiler/`\
40-`    rtl/`\
41-`    ...`\
42-`  tags/`\
43-`    release_2_0_0/`\
44-`      compiler/`\
45-`      rtl/`\
46-`      ...`\
47-`  branches/`\
48-`    fixes_2_0/`\
49-`      compiler/`\
50-`      rtl/`\
51-`      ...`\
52-`    temporarydevelopment/`\
53-`      compiler/`\
54-`      rtl/`\
55-`      ...`
39+```text
40+fpc/
41+ trunk/
42+ compiler/
43+ rtl/
44+ ...
45+ tags/
46+ release_2_0_0/
47+ compiler/
48+ rtl/
49+ ...
50+ branches/
51+ fixes_2_0/
52+ compiler/
53+ rtl/
54+ ...
55+ temporarydevelopment/
56+ compiler/
57+ rtl/
58+ ...
59+```
5660
57-`fpcdocs/`\
58-`  trunk/`\
59-`    Makefile`\
60-`    *.tex`\
61-`    ...`\
62-`  tags/`\
63-`    release_2_0_0/`\
64-`  branches/`
61+```text
62+fpcdocs/
63+ trunk/
64+ Makefile
65+ *.tex
66+ ...
67+ tags/
68+ release_2_0_0/
69+ branches/
70+```
6571
66-`fpcbuild/`\
67-`  trunk/`\
68-`    Makefile`\
69-`    demo`\
70-`    ...`\
71-`  tags/`\
72-`    release_2_0_0/`\
73-`  branches/`
72+```text
73+fpcbuild/
74+ trunk/
75+ Makefile
76+ demo
77+ ...
78+ tags/
79+ release_2_0_0/
80+ branches/
81+```
7482
75-`logs/`\
76-`  Changes.fpc`\
77-`  Changes.fpcdocs`\
78-`  ...`
83+```text
84+logs/
85+ Changes.fpc
86+ Changes.fpcdocs
87+ ...
88+```
7989
8090The Read-Only (anonymous) URL prefix is:
8191
82-[`http://svn.freepascal.org/svn/`](http://svn.freepascal.org/svn/)
92+```text
93+http://svn.freepascal.org/svn/
94+```
8395
8496The actual urls are
8597
86-[`http://svn.freepascal.org/svn/fpc/`](http://svn.freepascal.org/svn/fpc/)\
87-[`http://svn.freepascal.org/svn/lazarus/`](http://svn.freepascal.org/svn/lazarus/)
98+```text
99+http://svn.freepascal.org/svn/fpc/
100+http://svn.freepascal.org/svn/lazarus/
101+```
88102
89103The URL prefix needed to be able to commit changes is:
90104
91-`svn+ssh://username@svn.freepascal.org/FPC/svn/`
105+```text
106+svn+ssh://username@svn.freepascal.org/FPC/svn/
107+```
92108
93109This URL will be used in all examples below.
94110
95111On the local machine the repositories can be found with the URL
96112
97-[`file:///FPC/svn`](file:///FPC/svn)
113+```text
114+file:///FPC/svn
115+```
98116
99117If you want to switch the URL prefix, for example change the logs repository svn+ssh to http, you can do this on windows with:
100118
101-`cd logs`\
102-`svn switch --relocate svn+ssh://svn.freepascal.org:/FPC/svn/logs `[`http://svn.freepascal.org/svn/logs`](http://svn.freepascal.org/svn/logs)` .`
119+```text
120+cd logs
121+svn switch --relocate svn+ssh://svn.freepascal.org:/FPC/svn/logs http://svn.freepascal.org/svn/logs .
122+```
103123
104124where svn.freepascal.org is in this case the name of the session of the svn server in Putty.
105125
106126On unix do:
107127
108-`cd logs`\
109-`svn switch --relocate svn+ssh://svn.freepascal.org/FPC/svn/logs `[`http://svn.freepascal.org/svn/logs`](http://svn.freepascal.org/svn/logs)` .`
128+```text
129+cd logs
130+svn switch --relocate svn+ssh://svn.freepascal.org/FPC/svn/logs http://svn.freepascal.org/svn/logs .
131+```
110132
111133**Note:** Don't make a mistake when typing the second url else you've to re-checkout.
112134
113135To get a list of the directory layout the list command or its abbreviation ls can be used:
114136
115-`svn ls svn+ssh://username@svn.freepascal.org/FPC/svn/fpcdocs/`\
116-`svn ls svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/trunk/`
137+```text
138+svn ls svn+ssh://username@svn.freepascal.org/FPC/svn/fpcdocs/
139+svn ls svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/trunk/
140+```
117141
118142**Tip:** Put the URL you need in an environment variable in your shell profile like
119143
120-`export SVNROOT=svn+ssh://username@svn.freepascal.org/FPC/svn`\
121-`export SVNFPC=$SVNROOT/fpc`\
122-`export SVNFPCDOCS=$SVNROOT/fpcdocs`
144+```text
145+export SVNROOT=svn+ssh://username@svn.freepascal.org/FPC/svn
146+export SVNFPC=$SVNROOT/fpc
147+export SVNFPCDOCS=$SVNROOT/fpcdocs
148+```
123149
124150This way you can shorten the lines you need to type
125151
126-` svn ls $SVNFPC`\
127-` svn ls $SVNFPCDOCS`
152+```text
153+ svn ls $SVNFPC
154+ svn ls $SVNFPCDOCS
155+```
128156
129157## Migration of CVS data
130158
131159First release_2_0_0 tag will be imported, branched (fixes_2_0) and tagged (release_2_0_0). After that all changes made to CVS HEAD will be commited to the trunk and merged to the fixes_2_0 branch.
132160
133161The CVS repository for fpc is locked to prevent new commits.
134162
135163## Checkout
136164
137165To checkout the trunk (main development) of fpc use the following command:
138166
139-`svn co svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/trunk/ fpc`
167+```text
168+svn co svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/trunk/ fpc
169+```
140170
141171To checkout the latest stable that will make up the next release use the following command:
142172
143-`svn co svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/branches/fixes_2_0/ fpc-2.0`
173+```text
174+svn co svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/branches/fixes_2_0/ fpc-2.0
175+```
144176
145177Doing this with the win32 command line client is more tricky: first, get putty and install it and copy the plink.exe to the same directory as the svn client. Then create a new session in Putty, name it e.g. Idefix. Configure this session to auto login on idefix. Futher, create an enviroment variable SVN_SSH with the value plink.exe. Then do
146178
147-` svn co svn+ssh://Idefix:/FPC/svn/fpc/trunk/ fpc`
179+```text
180+ svn co svn+ssh://Idefix:/FPC/svn/fpc/trunk/ fpc
181+```
148182
149183Example read-only checkout commands:
150184
151-`2.1.x: svn co `[`http://svn.freepascal.org/svn/fpc/trunk/`](http://svn.freepascal.org/svn/fpc/trunk/)\
152-`2.0.x: svn co `[`http://svn.freepascal.org/svn/fpc/branches/fixes_2_0/`](http://svn.freepascal.org/svn/fpc/branches/fixes_2_0/)\
153-`2.0.0: svn co `[`http://svn.freepascal.org/svn/fpc/tags/release_2_0_0/`](http://svn.freepascal.org/svn/fpc/tags/release_2_0_0/)
185+```text
186+2.1.x: svn co http://svn.freepascal.org/svn/fpc/trunk/
187+2.0.x: svn co http://svn.freepascal.org/svn/fpc/branches/fixes_2_0/
188+2.0.0: svn co http://svn.freepascal.org/svn/fpc/tags/release_2_0_0/
189+```
154190
155191## Updating and commiting
156192
157193Updating and commiting works the same as with CVS with one expection. The exception is for files that had conflicts. Subversion requires you to explicitly mark files (or directories) that had conflicts as resolved.
158194
159195To update the current directory use the follwing command:
160196
161-`svn up`
197+```text
198+svn up
199+```
162200
163201To only update the compiler directory use the following command:
164202
165-`svn up compiler`
203+```text
204+svn up compiler
205+```
166206
167207To commit your changes
168208
169-` svn ci`
209+```text
210+ svn ci
211+```
170212
171213To mark a conflict as resolved:
172214
173-` svn resolved <file>`
215+```text
216+ svn resolved <file>
217+```
174218
175219For committing with proper mime settings, you should enable auto-prop'ing in your svn client configuration (unix: ~/.subversion/config; Windows: %AppData%/subversion/config). Make the following settings:
176220
177-`[miscellany]`\
178-`enable-auto-props = yes`\
179-`[auto-props]`\
180-`*.sh = `[`svn:eol-style=native;svn:executable`](svn:eol-style=native;svn:executable)\
181-`*.pp = `[`svn:eol-style=native;svn:mime-type=text/pascal`](svn:eol-style=native;svn:mime-type=text/pascal)\
182-`*.pas = `[`svn:eol-style=native;svn:mime-type=text/pascal`](svn:eol-style=native;svn:mime-type=text/pascal)\
183-`*.fpc = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
184-`*.inc = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
185-`*.ini = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
186-`*.xml = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
187-`*.tex = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
188-`*.log = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
189-`*.htm = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
190-`*.html = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
191-`*.fig = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
192-`*.php = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
193-`*.php3 = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
194-`*.tmpl = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
195-`*.fpc = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
196-`*.fp = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
197-`*.sql = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
198-`*.txt = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
199-`*.png = `[`svn:mime-type=image/png`](svn:mime-type=image/png)\
200-`*.jpg = `[`svn:mime-type=image/jpeg`](svn:mime-type=image/jpeg)\
201-`*.gif = `[`svn:mime-type=image/gif`](svn:mime-type=image/gif)\
202-`*.ico = `[`svn:mime-type=image/ico`](svn:mime-type=image/ico)\
203-`*.o = `[`svn:mime-type=application/octet-stream`](svn:mime-type=application/octet-stream)\
204-`Makefile = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
205-`*.lfm = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
206-`*.lrs = `[`svn:eol-style=native;svn:mime-type=text/pascal`](svn:eol-style=native;svn:mime-type=text/pascal)\
207-`*.lpk = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
208-`*.lpi = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
209-`*.lpl = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
210-`*.lpr = `[`svn:eol-style=native;svn:mime-type=text/pascal`](svn:eol-style=native;svn:mime-type=text/pascal)\
211-`*.cfg = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
212-`*.rc = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
213-`*.manifest = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)
221+``` pascal
222+[miscellany]
223+enable-auto-props = yes
224+[auto-props]
225+*.sh = svn:eol-style=native;svn:executable
226+*.pp = svn:eol-style=native;svn:mime-type=text/pascal
227+*.pas = svn:eol-style=native;svn:mime-type=text/pascal
228+*.fpc = svn:eol-style=native;svn:mime-type=text/plain
229+*.inc = svn:eol-style=native;svn:mime-type=text/plain
230+*.ini = svn:eol-style=native;svn:mime-type=text/plain
231+*.xml = svn:eol-style=native;svn:mime-type=text/plain
232+*.tex = svn:eol-style=native;svn:mime-type=text/plain
233+*.log = svn:eol-style=native;svn:mime-type=text/plain
234+*.htm = svn:eol-style=native;svn:mime-type=text/plain
235+*.html = svn:eol-style=native;svn:mime-type=text/plain
236+*.fig = svn:eol-style=native;svn:mime-type=text/plain
237+*.php = svn:eol-style=native;svn:mime-type=text/plain
238+*.php3 = svn:eol-style=native;svn:mime-type=text/plain
239+*.tmpl = svn:eol-style=native;svn:mime-type=text/plain
240+*.fpc = svn:eol-style=native;svn:mime-type=text/plain
241+*.fp = svn:eol-style=native;svn:mime-type=text/plain
242+*.sql = svn:eol-style=native;svn:mime-type=text/plain
243+*.txt = svn:eol-style=native;svn:mime-type=text/plain
244+*.png = svn:mime-type=image/png
245+*.jpg = svn:mime-type=image/jpeg
246+*.gif = svn:mime-type=image/gif
247+*.ico = svn:mime-type=image/ico
248+*.o = svn:mime-type=application/octet-stream
249+Makefile = svn:eol-style=native;svn:mime-type=text/plain
250+*.lfm = svn:eol-style=native;svn:mime-type=text/plain
251+*.lrs = svn:eol-style=native;svn:mime-type=text/pascal
252+*.lpk = svn:eol-style=native;svn:mime-type=text/plain
253+*.lpi = svn:eol-style=native;svn:mime-type=text/plain
254+*.lpl = svn:eol-style=native;svn:mime-type=text/plain
255+*.lpr = svn:eol-style=native;svn:mime-type=text/pascal
256+*.cfg = svn:eol-style=native;svn:mime-type=text/plain
257+*.rc = svn:eol-style=native;svn:mime-type=text/plain
258+*.manifest = svn:eol-style=native;svn:mime-type=text/plain
259+```
214260
215261The following Delphi specific types are useful when porting delphi code:
216262
217-` *.bdsproj = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
218-` *.dof = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
219-` *.dpr = `[`svn:eol-style=native;svn:mime-type=text/pascal`](svn:eol-style=native;svn:mime-type=text/pascal)\
220-` *.dfm = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
221-` *.dpk = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)\
222-` *.bpg = `[`svn:eol-style=native;svn:mime-type=text/plain`](svn:eol-style=native;svn:mime-type=text/plain)
263+``` pascal
264+ *.bdsproj = svn:eol-style=native;svn:mime-type=text/plain
265+ *.dof = svn:eol-style=native;svn:mime-type=text/plain
266+ *.dpr = svn:eol-style=native;svn:mime-type=text/pascal
267+ *.dfm = svn:eol-style=native;svn:mime-type=text/plain
268+ *.dpk = svn:eol-style=native;svn:mime-type=text/plain
269+ *.bpg = svn:eol-style=native;svn:mime-type=text/plain
270+```
223271
224272For adding new directories it is sometimes needed to add ignores for generated files or directories. The following textfile and script can be used to add the <svn:ignore> property recursivly
225273
226-`> cat ignore.txt `\
227-`*.bak`\
228-`*.exe`\
229-`*.ppu`\
230-`*.o`\
231-`*.s`\
232-`fpcmade.*`\
233-`units`
274+```text
275+> cat ignore.txt
276+*.bak
277+*.exe
278+*.ppu
279+*.o
280+*.s
281+fpcmade.*
282+units
283+```
234284
235-`> cat updignore.sh`\
236-`#!/bin/sh`\
237-`` for f in `find . -type d | grep -v svn`; do ``\
238-`  svn ps `[`svn:ignore`](svn:ignore)` -F ignore.txt $f`\
239-`done`
285+``` pascal
286+> cat updignore.sh
287+#!/bin/sh
288+for f in `find . -type d | grep -v svn`; do
289+ svn ps svn:ignore -F ignore.txt $f
290+done
291+```
240292
241293## Branching and tagging
242294
243295For all major development tasks a branch will be created. This is to have the trunk allways be in a buildable state to don't disturb snapshot building. Only in branch it is allowed to have code that can't be build.
244296
245297Branching will only be done on a complete repository. Example command to branch:
246298
247-`svn copy svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/trunk/ \`\
248-`         svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/branches/newdevelopment/`
299+```text
300+svn copy svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/trunk/ \
301+ svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/branches/newdevelopment/
302+```
249303
250304Tagging works the same as branching:
251305
252-`svn copy svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/trunk/ \`\
253-`         svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/tags/newrelease/`
306+```text
307+svn copy svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/trunk/ \
308+ svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/tags/newrelease/
309+```
254310
255311After a branch or tag created it can be checkout with the following command:
256312
257-`svn checkout svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/branches/newdevelopment/ fpc-newdevelopment`
313+```text
314+svn checkout svn+ssh://username@svn.freepascal.org/FPC/svn/fpc/branches/newdevelopment/ fpc-newdevelopment
315+```
258316
259317## Merging
260318
261319For the compiler the policy is that all fixes and development will be done in the trunk. Small fixes can be merged to the fixes branch directly. Big fixes and minor development changes are also allowed to be merged if the core developpers agree.
262320
263321For the RTL, FCL and other packages. All fixes and new development can be merged as long as it also works with the latest released compiler.
264322
265323#### Merging automatically created files
266324
267325When merging commits containing automatically created files like Makefiles or the msg*.inc files of the compiler, you usually get conflicts when merging them. To solve this you've to revert the merges of the automatically created files, recreate them and then commit everything.
268326
269327For a merge containing a change to Makefile.fpc the steps would be:
270328
271329- execute the merge with svnmerge
272330- revert all Makefiles
273331- regenerate the Makefiles from the mutated Makefile.fpc's with fpcmake -Tall -w
274332- commit everything
275333
276334#### Merge with plain svn
277335
278336- On Windows use TortoiseSvn it has GUI (self-explaining)
279337- For command-line svn, use
280338
281339
282340
283341svn \[help\] merge
284342
285343svn \[help\] mergeinfo
286344
287345When committing the merge, in case of doing a selective commit (merged files only) include directories (including top-level). They contain svn-properties about the merge status
288346
289347- **Always run in top level dir / specify top level dir for fixes/trunk**
290348
291349
292350The root dir has a property
293351
294352
295353<svn:mergeinfo>
296354
297355containing what was already merged. It will be modified and must be committed
298356
299357Using mergeinfo (which revisions have or have not been merged)
300358
301359Raw list of all merged rev:
302360
303-`svn mergeinfo  trunk_dir  fixes_0_9_30_dir `
361+```text
362+svn mergeinfo trunk_dir fixes_0_9_30_dir
363+```
304364
305365Raw list of all not yet merged rev
306366
307-`svn mergeinfo  --show-revs eligible  trunk_dir  fixes_0_9_30_dir`
367+```text
368+svn mergeinfo --show-revs eligible trunk_dir fixes_0_9_30_dir
369+```
308370
309371On Linux, to get log for mergeinfo
310372
311-`svn mergeinfo  --show-revs eligible  trunk_dir  fixes_0_9_30_dir  |  awk 'gsub("r", "-r ")' | xargs svn log trunk_dir`
373+```text
374+svn mergeinfo --show-revs eligible trunk_dir fixes_0_9_30_dir | awk 'gsub("r", "-r ")' | xargs svn log trunk_dir
375+```
312376
313377Using merge
314378
315-`svn merge  trunk_dir  fixes_0_9_30_dir  -c 123[,124,128] [--force] [--dry-run] [--record-only] `
379+```text
380+svn merge trunk_dir fixes_0_9_30_dir -c 123[,124,128] [--force] [--dry-run] [--record-only]
381+```
316382
317383-c 123
318384
319385
320386The change that made rev 123 (change between r122 and r123 / equals "-r 122:123")
321387
322388Use "-r 123:130" to merge changes after r123 up to (including) 130
323389
324390--record-only
325391
326392
327393mark as merged, without merging (block this from being merged)
328394
329395## Tools
330396
331397Some people prefer GUItools instead of command line clients.
332398
333399- A good client with explorer integration for win32 is TortoiseSVN (http://tortoisesvn.tigris.org/ ). How to use it with ssh authentication can be found at <http://tortoisesvn.berlios.de/faq/index.php?action=artikel&cat=8&id=30&artlang=en>.
334400- RapidSVN is a GUI for Windows and Linux. It can be found at <http://rapidsvn.tigris.org>.
335401- GUI tools for Mac OS X (http://versiontracker.com): SvnX, eSvn, iSVN, Subcommander
336402
337403(Cygwin also has an SVN client)
338404
339405## Committing over http
340406
341407For people behind firewalls and proxies, SVN access over HTTP was also configured:
342408
343409 http://svn.freepascal.org/FPC/svn/<repository>
344410
345411When committing you will be prompted for username and passwd.
346412
347413Note that some HTTP proxies don't support webdav correctly, so a HTTP connection cannot be used and ssh remains the only alternative for committing.
348414
349415---
350416*From the Free Pascal wiki, page "SVN Migration", as it stood on 2014-08-11 after a change by BigChimp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
351417Category: FPC internals
352418Category: Lazarus internals
353419Category: Revision control

Back to history