Hi, I normally avoid chatting on Linux topic. and I hate when someone ask his/her problem on chat. I hate because It is one to one communication. I redirect such newbies to mailing list so that other can participate into it. Google index mailing list thread so that other can read such thread after google search. But I found one useful thing in one to one chat system. one of one chat system can be useful for guiding the procedure to newbies.
Today when Abhishek Indoria
(A 14 year old school boy, OLPC contributor) asked me how he can put his source code to some hosting site, I immediately got idea of "Quick Start Chat
". In this system I have explained him each and every steps and he followed all steps. I always wanted to make a tutorial on how to get started with google code hosting but now I have spent 2-3 hour teaching on chat to produce "quick start chat". You can also blog such "quick start chat" as tutorial.
11:22 AM Abhishek: Dude, I know you may be busy...erm..do you know about GIT? or subversion?
11:23 AM me: I have used only svn
but git is something which is better to learn
Abhishek: erm...I need to set up my whole project source code online...
how do I do that?
11:24 AM me: you can do it using sourceforge or Google code hosting
google code hosting use SVG
you can use github too
github use GIT
11:25 AM Abhishek:
Sourceforge.net seems good...But, I need to upload the Source in zip or
rar or .tar format instead of erm...open editing version like GIT or
me: no no ,, do not upload tar or zip file
11:26 AM first create a project on these site
and then make a checkout
Abhishek: I have created the project...Checkout?
me: yes,,, checkout the empty project
Abhishek: You know, I feel like stupid as I am only 14 and have loads to learn;)
me: then put your files into it
11:27 AM seee, I learn these things at the age of 24,,,
after making a empty checkout ,, you need to paste files into it
then add files using
11:28 AM svn add filename.cpp
after that you need to comit the files
using "svn ci" command
Ohh..Okay, I am logging into sourceforge...I'll see what I can do,
thanks;) Did you read The Lost Symbol by Dan Brown or Code to Zero by
11:29 AM me: I suggest to use google code hosting,,
I have used it ,, and it has cool features
Abhishek: Erm.. The thing is...
whenever I try Google Code, I can't upload a damn single file.. Dunno why:(
11:30 AM me: Let me guide you,,
Do you have svn installed ??
11:31 AM I reinstalled Ubuntu yesterday,,, SVN Not installed...
me: ok,, just install svn command,,
it wont take much time
11:32 AM mean while go to google code hosting
and create a new project
do you have google wave account ?
11:33 AM Abhishek: No..but I have already created a project..whats google wave?
11:34 AM me: leave google wave,,, Give me link to google project
your project link
Abhishek: wait please.
me: click it,, and go to source tab
11:36 AM Abhishek: okay..
you can see checkout command
11:37 AM me: send me
when I do that...it says
me: see,, you have deleted the trunk
11:39 AM When you create the new project it make 4 directory
me: you it will suggest you to make new project
11:40 AM just delete it and create new project
11:43 AM me: Now go to source code and give me the checkout command
never share password
me: now open a terminal
me: and create a directory where you want to create code
11:45 AM ex
now apply same command by remove trunk out of it
11:47 AM Abhishek: kay
me: show me the output
It will ask for password, it is there at google code website
11:48 AM Abhishek: A imperius/trunk
Checked out revision 1.
now you can see 3 directory
which you have checked out
11:49 AM me: see trunk will be needed for your code
so now cd trunk
11:50 AM me: send me output of these 3 command - pwd, ls -l. svn status
Abhishek: wait, please.
pwd -- /media/Disk 3/BoomingBang/codenamei/imperius/trunk
11:51 AM ls -l : total 0
svn status ... Nothing.
now create a new file
or you can directly paste your code file here
11:52 AM Abhishek: I have folders too...
me: I will show you how to add commit using one file,,
you can do that later
11:53 AM just paste one file
11:54 AM me: give me "svn status"
Abhishek: ? configure
thats the status ^^
11:55 AM me: yes, it is saying, It is that configure is a new file
now you need to add this file to svn system
"svn add configure" command
11:56 AM Abhishek: saying: A configure
I think done.
me: yes,, but change are local
you need to comit the change to mail project
"svn ci filenames" to comit
11:57 AM now use "svn ci configure"
give me the output
Abhishek: --This line, and those below, will be ignored--
There is NANO
11:58 AM okay...
me: yes,, while commiting the files you need to write comments
11:59 AM and then save it
Abhishek: after the saving of file, though I entered it empty;) ...Its saying...Adding configure
Transmitting file data .
Committed revision 2.
check the code,,
12:00 PM It is listing your changes
can you add me in your project for a moment so that I will show something more,,,
Abhishek: wow:) Excellent...thanks..okay, I can add you...
me: this is just 30%
12:01 PM tutorial
see your files at
Abhishek: commitors or owners or contributors?
12:02 PM me: commiter
just add me as commiter
12:03 PM Abhishek: okay.
12:04 PM done
12:05 PM me: just a secound
12:06 PM checking out code now
12:08 PM I have added a new test file,,
12:09 PM just apply svn status command
send me the output
12:11 PM me: svn status --show-updates --verbose
give me output
12:12 PM Abhishek: * test.cpp
2 2 hackerboymayabhi configure
* 1 1 ? .
Status against revision: 3
12:13 PM messed up:)
me: try "svn st -u"
12:14 PM Abhishek: * test.cpp
* 1 .
Status against revision: 3
12:15 PM it means,, your files are not uptodated,,
just apply "svn update" command
to get latest code by other developers
Abhishek: okay..done that.
me: always send output of each command
12:16 PM Abhishek: A test.cpp
Updated to revision 4.
me: see, I have made 2 rivision,,
so now our code is at revision number 4
12:17 PM everytime you update change to trunk, It will make a new revision number
me: anytime you can switch to old revision number too
now you modify test.cpp
12:18 PM Abhishek: how? ci is not working.
me: you have test.cpp file?
12:19 PM me: just open with any editor and add something
add a line
12:20 PM Abhishek: yeah.
me: apply,, svn st
both are same command
12:21 PM me: if you apply svn st command , It will give you something like
- "M test.cpp"
give me output of ls, cat test.cpp
12:22 PM Abhishek: ls : configure test.cpp
cat:::::::: test.cpp#include <iostream>
using namespace std;
//hello , code is still incomplete ;
// I know that code is incomplete
12:23 PM me: apply command "svn status"
me: I think you can not saved your changes
12:24 PM what editor you are using?
12:25 PM Abhishek: it says..at revision 5
me: you can commit your changes,, It wont show,,,
why you commited your changes,, :( I didn't told you,,
now modifiy the file again using gedit
12:26 PM done.
me: now apply svn st
12:27 PM or svn status
Abhishek: M test.cpp
me: yes,, This mean,, test.cpp is modified by you,,
12:28 PM you can check the differece
apply "svn diff test.cpp"
Abhishek: Index: test.cpp
- test.cpp (revision 5)
+++ test.cpp (working copy)
@@ -6,4 +6,5 @@
// I know that code is incomplete
+// I know I am a jerk and I don't like C++
12:29 PM me: this is a text based +/- line which will tell you what you have added and deleted
but I will suggest to use
GUI diff tool
12:31 PM me: I saw your comit,, you are now sending log message while comitting
see this url,,
you can see differece b/w comit by you are me
12:32 PM apply command
Abhishek: got that..list
me: export SVN_EDITOR="vi"
you need to set environment variable,,
have you used vi edut???
12:33 PM ever??
Abhishek: I used vi edit...nor edut;)
me: ever was mispelt as edut
12:34 PM have you appled that export command
me: now appy "svn ci" command to comit your changes
12:36 PM press "i" in vi editor to write comment (log message), them use Esp + ":wq" + "Enter" to save log
12:37 PM so you have lean ,,, adding files and commiting files
12:39 PM me: you can anytime compare the changes in two revision
12:40 PM Abhishek: okay...what about folders? when I have to upload them?
12:41 PM me: just paste folder(directory) into trunk
then add folder and files
svn add command
Abhishek: okay. thanks
lets do it
12:42 PM Abhishek: okay...should I update?
12:43 PM me: let me send "svn st -u"
12:44 PM Abhishek: ?
12:45 PM should I commit?
me: no,, first send me out of "svn st"
also install "diffuse" in other tab,,,
12:46 PM this will needed to view the source code changes
12:47 PM ??
12:48 PM now what?
me: have you added the folder??
to svn ??
12:49 PM plz send me output of "svn st -u" command
12:50 PM Abhishek: A 0 build/m4
A 0 build/m4/sdl.m4
A 0 build/m4/ax_cflags_warn_all.m4
A 0 build/m4/libcurl.m4
A 0 build/m4/po.m4
A 0 build
Status against revision: 6
you have added correctly,
12:51 PM Abhishek: okay...
done Adding trunk/build
Transmitting file data ....
Committed revision 7.
12:52 PM me: Wow,,...
this is simply great
12:53 PM see,,, you are committing the files and folders inside trunk,,
Abhishek: hmm..got it... and, if I want to release a software, then?
me: trunk is used for development purpose,,
12:54 PM after making sufficient revision, you can branch out the code
that is why the branch folder exist
you need to make a new directory into branch folder
12:55 PM mkdir branches/v0.001
me: now,, let support you are at revision 567 in trunk
12:56 PM Abhishek: hmm...
me: now you can use copy command to transfer the CURRENT code from trunk code to branch folder
me: BUT remember you should not use copy command of linux
you need to use svn copy command
12:57 PM you can read tutorial also , how to make branch using svn
let me search
Abhishek: okay..thanks buddy;)
me: Let try out now,,
12:58 PM Hope you are now getting bore !! or late
Let try out now,, Hope you are now getting bore !! or late
Abhishek: nothing...We can try:)
me: so,, send me "pwd"
Abhishek: /media/Disk 3/BoomingBang/codenamei/imperius/trunk
12:59 PM me: apply cd ..
it means go back one directory uop
Abhishek: i know;) okay, what now, please?
1:00 PM me: no no ,, send me output of pwd now,,,
Abhishek: /media/Disk 3/BoomingBang/codenamei/imperius
me: ok,, great,,
now apply this command
1:01 PM svn copy trunk branches/v0.1
Abhishek: A branches/v0.1
me: apply "svn st" now,,
send me output
Abhishek: A + branches/v0.1
1:02 PM me: wow,,, it means you have added a new branch,,,
now comit it
you know how to comit
1:03 PM and send me the output
Abhishek: yes..done...Adding branches/v0.1
Committed revision 8.
me: just check the url
now,, it is showing your branch
1:04 PM Abhishek: yes
1:05 PM now suppose your friend want v0.1 version
how you will send him??
1:06 PM Abhishek: erm...update it?
me: Nope ..... In such case you need to send him the readonly mode source checkout url
open a new terminal
with another location
fresh location may be home folder
1:07 PM Abhishek: okay
me: send me pwd
now apply this command
1:08 PM Abhishek: A v0.1/build
Checked out revision 8.
me: You have checkout the branch v0.1
you can check
there will be new directory
1:09 PM Abhishek: yeah..there is:)
me: we have done a small mistake while creating our branch
Abhishek: what mistake?
1:10 PM me: we would have applied this command
--- "svn copy trunk branches/imperius-v0.1
if you would have applied this command
our branch name would be "imperius-v0.1"
1:11 PM Abhishek: hmm...
me: and new folder created in your friend's directory will be named as "imperius-v0.1" and not "v0.1"
it was my mistake...
Abhishek: hey..don't worry..we are just practicing.
1:12 PM me: using this you can send new branch to your friends to download
me: Do you know why branch;s are needed ??
1:13 PM Abhishek: erm..not sure...But for releases?
me: Yes,, release can be one advantage,, but
Let suppose we are a team of 100 developers
1:14 PM Abhishek: okay
me: and if everybody work in trunk, It will get many problem;s because not everybody work on same feature
1:15 PM me: may be if 2 developer want to work on special feature which you do not want to be part of trunk now ,,
Abhishek: I can put it in branch...?
me: then you can branch out the code to new unstable branch and then just use branch
In my company ,, I am working on separate branch ,,
1:16 PM of main project,,
after a month, we use to merge chnages,,
Abhishek: got it:)
me: You have just committed some code in main trunk
1:17 PM me: using same procude you can now comit in branch too
Abhishek: got it:) thank
me: and then start editing code and comit it,,
Abhishek: what is Tags?
me: Well I have not used tage much,, but let me try to explain it,,
1:18 PM Abhishek: okay...
1:19 PM me: Let assume you are working in trunk code
and everyday you will modify the code
1:20 PM you want use to try it,,,
me: but by this way they will execute the current trunk code
which may be unstalbe
1:21 PM me: so,, during the time of developemt you felt like this can be good tryout demo,,
then you can put the tag "stable"
1:22 PM now you have a "stable" tag into tag folder
now you can give link to stable code as
Abhishek: hmm..got it
me: now user will download stable code that that moment
me: now you can add new code to main trunk
this will not go to "stable" folder
1:24 PM after some time when you feel, that you are ready to make a new stable point, just move the "stable" tag
to current one
1:25 PM me: "tags" demote the stage of code at perticular instance of time
it is almost similar to "branches"
Abhishek: hmm...now our team can upload our work;)
1:26 PM me: but in branch you can comit but in "tags" you cannot comit (in my knowledge)
me: Have you go the idea of all these thing
Abhishek: yeah..I got it:) thanks
1:27 PM me: See Google code hosting also provide Bug Tacker
do you about it ??
Abhishek: I didn't know...
Abhishek: oh...right:) thanks
1:28 PM me: currently there are not bug there,,
when user will see any bug , they will file bug here
1:29 PM anyone can enter new bug here
me: developer will get to know about bugs and they can assign bug to other developer
1:30 PM after fixing bug they can close the bug....
Abhishek: Wow! This is far better than I thought.
me: see this project -- you can see bugs
1:31 PM there are loads:)
me: this bug tracker need to track,, new feature requests and new defects in code
It is recommended that always make checkin (svn ci) against bug
1:32 PM it means , whenever you want to added anything new to code,, first create bug and then make changes in code
comit the changes ,,
1:33 PM while committing source code,, you mention which bug you are solving,,
me: and after committing it , just close the bug
let me send you sample
this revision is made against bug 289
1:35 PM me: you can see the url to bug also,,
while making log file you need to make a url to issue
just write as,,
Fixing Issue 289 by soso changes
1:36 PM this will automatically make link to issue/bug 289
Abhishek: Okay...its pretty good:)
1:37 PM me: You can setup developer mailing list too
Abhishek: using google groups?
me: and set some setting so that all changes will goes to developer list
by this you can track who is check-in-ing (svn ci) what
1:38 PM Abhishek: okay..cool:)
me: this is not needed for small project,,where developer are less then 1-2
Abhishek: we have 21 developers:)
How 21 developer made this code
1:39 PM your age is 14,, are other developer are same age group,,
pretty nasty...and I was angered...we mailed it to each other ...None
of us knew about google code or same...Yup! all are 17 or less
1:40 PM me: wow,, I will love to meet you guys,, you are future of india,, are you all in jaipur??
Abhishek: Hehe...four of us are from india...rest, Russia, France, UK, Bulgaria, Latvia,and ya de ya de ya!
1:41 PM me: So,, you all would have used google code,, It have wiki too,,
you can make documentation
Abhishek: Yeah..thats what I am thinking...
you are doing any new dev?
1:42 PM me: I am doing a hell of activity ,, my prime goal is make foss adaptation in india and develop Eduvid project
1:43 PM Abhishek: whats Eduvid?
me: do you have any question regarding svn
and google code
Abhishek: Nope..svn is clear..as well as google code...thanks to you...we are a group..named FOSSFY stands for
me: send me url --
Abhishek: Free & Open Source Software For Youth (Foundation)
me: have you joined LUG@IITD mailing lsit ??
Abhishek: NONE of them are updated... yeah... I think so;)
Abhishek: okay, thanks..
1:46 PM me: Do you really want to thanks,, ?? Do you what is the way to thanks in Free Culture ??
Abhishek: Contributing software?
1:47 PM me:
If you get problem while learning something Or you something new
knowledge , Always blog / write tutorial so that other can work on it,,
write software is not a contribution]
me: see,, google has written google code hosting ,, but you was not aware of this tool
1:48 PM me: advocating good tools and software is more important then writing software itself,,
1:49 PM me:
It will be good if you make a good tutorial on get started with google
code,,, I wanted to do it,, but never get time for it,,, So I spent my
time with you on chat,, so that now I will blog out chat...
This chat will be useful to new users who want to quick start on google code
1:50 PM Abhishek: Okay, cool :D
me: this is the reason I was asking pwd and other output time to time
Abhishek: right :)
me: so that other user can read this chat as tutorial, :)