61
|
1 |
-*- outline -*-
|
|
2 |
|
|
3 |
* Setup git.
|
|
4 |
|
|
5 |
** Debian.
|
|
6 |
|
|
7 |
For Etch Degian release use git-core package from backports,
|
|
8 |
old 1.4 version of git very dumb compared to new version 1.5.
|
|
9 |
|
|
10 |
$ sudo apt-get install git-core
|
|
11 |
|
|
12 |
After install setup some options:
|
|
13 |
|
|
14 |
$ git config --global user.name "Oleksandr Gavenko"
|
|
15 |
$ git config --global user.mail "gavenkoa@gmail.com"
|
|
16 |
$ cat ~/.gitconfig
|
|
17 |
[user]
|
|
18 |
name = Oleksandr Gavenko
|
|
19 |
mail = gavenkoa@gmail.com
|
|
20 |
|
|
21 |
* Start your project.
|
|
22 |
|
|
23 |
Setup proj space on fs.
|
|
24 |
|
|
25 |
$ mkdir proj
|
|
26 |
$ cd proj
|
|
27 |
$ git init
|
|
28 |
Initialized empty Git repository in /home/user/tmp/proj/.git/
|
|
29 |
$ ls -a
|
|
30 |
. .. .git
|
|
31 |
|
|
32 |
Add file, make changes, commit all.
|
|
33 |
|
|
34 |
$ emacs Makefile
|
|
35 |
... C-x C-c
|
|
36 |
$ emacs app.c
|
|
37 |
... C-x C-c
|
|
38 |
$ git add Makefile app.c
|
|
39 |
$ git status
|
|
40 |
# On branch master
|
|
41 |
#
|
|
42 |
# Initial commit
|
|
43 |
#
|
|
44 |
# Changes to be committed:
|
|
45 |
# (use "git rm --cached <file>..." to unstage)
|
|
46 |
#
|
|
47 |
# new file: Makefile
|
|
48 |
# new file: app.c
|
|
49 |
#
|
|
50 |
|
|
51 |
or just
|
|
52 |
|
|
53 |
$ git add .
|
|
54 |
|
|
55 |
Commit newlly added file:
|
|
56 |
|
|
57 |
$ git commit
|
|
58 |
... Write message log ...
|
|
59 |
Created initial commit 2169263: My first commit massage.
|
|
60 |
1 files changed, 4 insertions(+), 0 deletions(-)
|
|
61 |
create mode 100644 app.c
|
|
62 |
|
|
63 |
* Undo tracking added file.
|
|
64 |
|
|
65 |
You do
|
|
66 |
|
|
67 |
$ git add badfile
|
|
68 |
$ git status
|
|
69 |
# On branch master
|
|
70 |
# Changes to be committed:
|
|
71 |
# (use "git reset HEAD <file>..." to unstage)
|
|
72 |
#
|
|
73 |
# new file: badfile
|
|
74 |
#
|
|
75 |
|
|
76 |
To stop tracking badfile do
|
|
77 |
|
|
78 |
$ git rm --cached badfile
|
|
79 |
$ git status
|
|
80 |
# On branch master
|
|
81 |
# Untracked files:
|
|
82 |
# (use "git add <file>..." to include in what will be committed)
|
|
83 |
#
|
|
84 |
# file
|
|
85 |
nothing added to commit but untracked files present (use "git add" to track)
|
|
86 |
|
|
87 |
or
|
|
88 |
|
|
89 |
$ git reset badfile
|
|
90 |
|
|
91 |
* Doing changes.
|
|
92 |
|
|
93 |
$ printf "clean:\n<TAB>rm $(wildcard *.o)" >>Makefile
|
|
94 |
$ git diff
|
|
95 |
diff --git a/Makefile b/Makefile
|
|
96 |
index e84f7e9..cd2438a 100644
|
|
97 |
--- a/Makefile
|
|
98 |
+++ b/Makefile
|
|
99 |
@@ -1,2 +1,5 @@
|
|
100 |
all:
|
|
101 |
@echo XXX
|
|
102 |
exit 1
|
|
103 |
+
|
|
104 |
+clean:
|
|
105 |
+ rm -f *.o
|
|
106 |
\ No newline at end of file
|
|
107 |
$ git add Makefile
|
|
108 |
$ git commit -m "Added clean target."
|
|
109 |
Created commit 11272b9: Added clean target.
|
|
110 |
1 files changed, 1 insertions(+), 0 deletions(-)
|
|
111 |
create mode 100644 file
|
|
112 |
|
|
113 |
or just
|
|
114 |
|
|
115 |
$ git commit -a -m "Added clean target."
|
|
116 |
|
|
117 |
* Using git to work with SVN offline.
|
|
118 |
|
62
|
119 |
Prepare SVN and git utilities:
|
|
120 |
|
61
|
121 |
$ sudo apt-get svn git-core git-svn
|
62
|
122 |
|
|
123 |
Making SVN repo
|
|
124 |
|
|
125 |
$ cd $HOME/tmp
|
|
126 |
$ svnadmin create svn-repo
|
|
127 |
$ svn co file://$HOME/tmp/svn-repo svn-devel
|
|
128 |
$ cd svn-devel
|
|
129 |
$ mkdir tags trunk branches
|
|
130 |
$ svn add *
|
|
131 |
A branches
|
|
132 |
A tags
|
|
133 |
A trunk
|
|
134 |
$ cd trunk/
|
|
135 |
$ printf "all:\n echo XXX\n" >Makefile
|
|
136 |
$ printf "int main() {return 0;}" >main.c
|
|
137 |
$ svn add *
|
|
138 |
$ cd ..
|
|
139 |
$ svn st
|
|
140 |
A trunk
|
|
141 |
A trunk/main.c
|
|
142 |
A trunk/Makefile
|
|
143 |
A branches
|
|
144 |
A tags
|
|
145 |
$ svn ci -m init
|
|
146 |
Adding branches
|
|
147 |
Adding tags
|
|
148 |
Adding trunk
|
|
149 |
Adding trunk/Makefile
|
|
150 |
Adding trunk/main.c
|
|
151 |
Transmitting file data ..
|
|
152 |
$ svn cp -m v0.0 file://$HOME/tmp/svn/trunk file://$HOME/tmp/svn/tags/v0.0
|
|
153 |
$ svn cp -m v0.1 file://$HOME/tmp/svn/trunk file://$HOME/tmp/svn/branches/v0.1
|
|
154 |
|
|
155 |
Moving SVN changset to git repo
|
|
156 |
|
|
157 |
$ cd $HOME/tmp
|
63
|
158 |
$ git svn init file://$HOME/tmp/svn git-repo
|
62
|
159 |
$ ls -a
|
|
160 |
. .. .git
|
|
161 |
$ git svn fetch
|
|
162 |
A trunk/main.c
|
|
163 |
A trunk/Makefile
|
|
164 |
W: +empty_dir: branches
|
|
165 |
W: +empty_dir: tags
|
|
166 |
r1 = 52ccd9882979dd53ec198dbac108783ec660410f (git-svn)
|
|
167 |
A tags/v0.0/main.c
|
|
168 |
A tags/v0.0/Makefile
|
|
169 |
r2 = 8ec8a772bb6f37ace56b3649066dc84e481ed427 (git-svn)
|
|
170 |
M trunk/Makefile
|
|
171 |
r3 = 2c169ff409ed504dd6a092b1e302beb3fd94871e (git-svn)
|
|
172 |
A branches/v0.1/main.c
|
|
173 |
A branches/v0.1/Makefile
|
|
174 |
r4 = e68d76f4ba6beea4b9059c1884c1f38ce10831a7 (git-svn)
|
|
175 |
M trunk/Makefile
|
|
176 |
r5 = cdde63974454b13ac53f2eeb201aa76c49fd875c (git-svn)
|
|
177 |
Checked out HEAD:
|
|
178 |
file:///home/sasha/tmp/svn r5
|
|
179 |
|
63
|
180 |
or (in old git version):
|
|
181 |
|
|
182 |
$ git svn clone file://$HOME/tmp/svn git-repo
|
|
183 |
|
62
|
184 |
Making changes in svn:
|
|
185 |
|
|
186 |
$ cd $HOME/tmp/svn-devel/trunk
|
|
187 |
$ echo ".PHONY: clean" >>Makefile
|
|
188 |
$ svn ci -m "Added clean to phony."
|
|
189 |
Sending trunk/Makefile
|
|
190 |
Transmitting file data .
|
|
191 |
Committed revision 6.
|
|
192 |
|
|
193 |
Making committed in git:
|
|
194 |
|
|
195 |
$ cd $HOME/tmp/git-repo/trunk
|
|
196 |
$ echo ".PHONY: all" >>Makefile
|
|
197 |
$ echo "int foo(int x) {return x+x;}" >>main.c
|
|
198 |
$ git status
|
|
199 |
# On branch master
|
|
200 |
# Changed but not updated:
|
|
201 |
# (use "git add <file>..." to update what will be committed)
|
|
202 |
#
|
|
203 |
# modified: Makefile
|
|
204 |
# modified: main.c
|
|
205 |
#
|
|
206 |
no changes added to commit (use "git add" and/or "git commit -a")
|
|
207 |
$ git commit -a -m "Bug fixed."
|
|
208 |
Created commit 222d399: Bug fixed.
|
|
209 |
2 files changed, 2 insertions(+), 0 deletions(-)
|
|
210 |
|
|
211 |
Getting changes from SVN to git:
|
|
212 |
|
|
213 |
$ git svn rebase
|
|
214 |
M trunk/Makefile
|
|
215 |
r6 = 8165e9bfb38e9df09a7313d19606ec227629b670 (git-svn)
|
|
216 |
First, rewinding head to replay your work on top of it...
|
|
217 |
Applying Bug fixed.
|
|
218 |
error: patch failed: trunk/Makefile:6
|
|
219 |
error: trunk/Makefile: patch does not apply
|
|
220 |
Using index info to reconstruct a base tree...
|
|
221 |
Falling back to patching base and 3-way merge...
|
|
222 |
Auto-merged trunk/Makefile
|
|
223 |
CONFLICT (content): Merge conflict in trunk/Makefile
|
|
224 |
Failed to merge in the changes.
|
|
225 |
Patch failed at 0001.
|
|
226 |
|
|
227 |
When you have resolved this problem run "git rebase --continue".
|
|
228 |
If you would prefer to skip this patch, instead run "git rebase --skip".
|
|
229 |
To restore the original branch and stop rebasing run "git rebase --abort".
|
|
230 |
|
|
231 |
rebase refs/remotes/git-svn: command returned error: 1
|
|
232 |
$ git add Makefile
|
|
233 |
$ git rebase --continue
|
|
234 |
Applying Bug fixed.
|
|
235 |
|
|
236 |
and return all from git to SVN:
|
|
237 |
|
|
238 |
$ git svn dcommit
|
|
239 |
Committing to file:///home/sasha/tmp/svn ...
|
|
240 |
M trunk/Makefile
|
|
241 |
M trunk/main.c
|
|
242 |
Committed r7
|
|
243 |
M trunk/main.c
|
|
244 |
M trunk/Makefile
|
|
245 |
r7 = 68e782c8d06635f2db4dd69b9ca8599f99da22e2 (git-svn)
|
|
246 |
No changes between current HEAD and refs/remotes/git-svn
|
|
247 |
Resetting to the latest refs/remotes/git-svn
|
|
248 |
|
|
249 |
See what going to SVN repo:
|
|
250 |
|
|
251 |
$ cd $HOME/tmp/svn-devel/trunk
|
|
252 |
$ svn diff -r BASE:HEAD
|
|
253 |
Index: Makefile
|
|
254 |
===================================================================
|
|
255 |
--- Makefile (working copy)
|
|
256 |
+++ Makefile (revision 7)
|
|
257 |
@@ -6,4 +6,4 @@
|
|
258 |
.o: .c
|
|
259 |
$(CC) $(CFLAGS) -c -o $@ $<
|
|
260 |
|
|
261 |
-.PHONY: clean
|
|
262 |
+.PHONY: all clean
|
|
263 |
Index: main.c
|
|
264 |
===================================================================
|
|
265 |
--- main.c (working copy)
|
|
266 |
+++ main.c (revision 7)
|
|
267 |
@@ -2,3 +2,4 @@
|
|
268 |
{
|
|
269 |
return 0;
|
|
270 |
}
|
|
271 |
+int foo(int x) {return x+x;}
|
|
272 |
$ svn up
|
|
273 |
U Makefile
|
|
274 |
U main.c
|
|
275 |
Updated to revision 7.
|
|
276 |
|
64
|
277 |
* gitk
|
62
|
278 |
|
64
|
279 |
gitk - The git repository browser
|
|
280 |
|
|
281 |
Installing:
|
|
282 |
|
|
283 |
$ sudo apt-get instal gitk
|
|
284 |
|
|
285 |
Using:
|
|
286 |
|
|
287 |
$ cd /path/to/git-repo
|
|
288 |
$ gitk
|
|
289 |
|
|
290 |
See
|
|
291 |
|
|
292 |
gitk(1)
|