Mercurial > hgbook
annotate en/concepts.tex @ 99:06383f9e46e4
More graphics.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Mon, 16 Oct 2006 14:54:37 -0700 |
parents | b8539d91c84d |
children | e0b961975c5e |
rev | line source |
---|---|
56
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
1 \chapter{Basic Concepts} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
2 \label{chap:concepts} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
3 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
4 This chapter introduces some of the basic concepts behind distributed |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
5 version control systems such as Mercurial. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
6 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
7 \section{Repository} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
8 \label{sec:concepts:repo} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
9 The repository is a directory where Mercurial stores the history for the |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
10 files under revision control. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
11 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
12 \subsection{Where?} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
13 % where is this repository you speak of? |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
14 XXX |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
15 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
16 \subsection{How?} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
17 % How are the changes stored? |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
18 XXX |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
19 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
20 \subsection{Structure} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
21 \label{sec:concepts:structure} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
22 % What's the structure of the repository? |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
23 A typical Mercurial repository is a directory which contains a checked out |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
24 working copy (see section~\ref{sec:concepts:workingcopy}) as well as |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
25 \sdirname{.hg} directory. Figure~\ref{ex:concepts:dirlist} shows the |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
26 contents of a freshly created repository. This repository does not contain |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
27 any revisions. Let's take a look at a repository that has history for |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
28 several files. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
29 Figure~\ref{ex:concepts:dirlist2} shows the contents of a repository keeping |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
30 history on two files. We see the checked out copies of the files |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
31 \filename{foo} and \filename{bar}, as well as the files containing their |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
32 histories \filename{foo.i} and \filename{bar.i}, respectively. Additionally, |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
33 we see the \filename{changelog.i} and \filename{00manifest.i} files. These |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
34 contain the repository-wide revision data, such as the commit message, and |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
35 the list of files in the repository during the commit. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
36 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
37 \begin{figure}[ht] |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
38 \interaction{concepts.dirlist} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
39 \caption{Contents of a freshly created repository} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
40 \label{ex:concepts:dirlist} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
41 \end{figure} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
42 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
43 \begin{figure}[ht] |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
44 \interaction{concepts.dirlist2} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
45 \caption{Contents of a repository tracking two files} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
46 \label{ex:concepts:dirlist2} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
47 \end{figure} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
48 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
49 \subsection{hgrc} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
50 % .hg/hgrc |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
51 XXX |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
52 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
53 \subsection{Creating a Repository} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
54 % hg init |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
55 Creating a repository is quick and painless. One uses the \hgcmd{init} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
56 command as figure~\ref{ex:concepts:hginit} demonstrates. The one argument |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
57 passed to the \hgcmd{init} command is the name of the repository. The name |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
58 can be any string usable as a directory name. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
59 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
60 \begin{caution} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
61 If you do not specify a name of the repository, the current working |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
62 directory will be used instead. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
63 \end{caution} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
64 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
65 \begin{figure}[ht] |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
66 \interaction{concepts.hginit} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
67 \caption{Creating a new repository} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
68 \label{ex:concepts:hginit} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
69 \end{figure} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
70 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
71 \subsection{Remote Repositories} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
72 \label{sec:concepts:remoterepo} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
73 In addition to repositories stored on the local file system, Mercurial |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
74 supports so called \emph{remote repositories}. These remote repositories |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
75 can be accessed via several different methods. See |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
76 section~\ref{sec:XXX:remotesetup} for instructions how to set up remote |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
77 repositories. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
78 % XXX: reference the proper section! |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
79 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
80 \subsubsection{SSH} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
81 \label{sec:concepts:remoterepo:ssh} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
82 Mercurial can use \command{ssh} to send and receive changes. The remote |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
83 repository is identified by an URL. The basic format for the URL is: |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
84 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
85 \begin{verbatim} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
86 ssh://[user@]host/path |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
87 \end{verbatim} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
88 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
89 Where \cmdargs{user} is optional, and the \cmdargs{path} is path to the |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
90 repository --- either an absolute or relative to the user's home directory |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
91 --- on the remote host with hostname: \cmdargs{host}. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
92 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
93 \begin{note} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
94 If the path for the remote repository is absolute there will be two |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
95 consecutive slashes. E.g., if the remote path is \dirname{/repos/hgbook}, |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
96 the URL would look something like the following: |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
97 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
98 \begin{verbatim} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
99 ssh://someuser@remotebox//repos/hgbook |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
100 \end{verbatim} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
101 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
102 Relative paths have only one slash and are relative to the user's home |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
103 directory. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
104 \end{note} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
105 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
106 \subsubsection{HTTP \& HTTPS} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
107 \label{sec:concepts:remoterepo:http} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
108 The other protocol supported is HTTP as well as HTTPS. The repository URL |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
109 is very much like that of the \command{ssh}. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
110 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
111 \begin{verbatim} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
112 http://[user@]remotebox/path |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
113 \end{verbatim} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
114 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
115 Just as before, the username is optional. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
116 % XXX: is it optional for both push & pull or just for pull? |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
117 This time however, the path is relative to the HTTP server root. |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
118 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
119 \section{Working Copy} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
120 \label{sec:concepts:workingcopy} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
121 XXX |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
122 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
123 \section{Revisions} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
124 \label{sec:concepts:revs} |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
125 XXX |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
126 |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
127 %%% Local Variables: |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
128 %%% mode: latex |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
129 %%% TeX-master: "00book" |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
130 %%% End: |
b8539d91c84d
Begining of concepts chapter
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
131 |