summaryrefslogtreecommitdiff
path: root/README.git
blob: 59079598f9f4c6f7b40dee9de05f65624a602e0a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
Mon Oct 24 21:50:18 IST 2011
============================

If you are reading this, you have retrieved the gawk code base via
Git from savannah.gnu.org.  This is good; gawk no longer uses CVS.

On GNU and Unix systems, please execute ./bootstrap.sh before invoking
the usual incantaton of `./configure && make && make check'.  This
version of bootstrap.sh should work OK.

On systems supported by configuration files in the pc/ subdirectory,
chdir into pc/ and run the make-config.bat script there.  This will produce
an up-to-date version of config.h from the latest configh.in.  Then
proceed as described in README_d/README.pc.

Bug reports should be sent to bug-gawk@gnu.org. Note that posting in
comp.lang.awk is generally a bad idea, no matter what the purpose, but
especially if you wish to report a gawk bug. Use the above email address.
Really.

You can find gawk's GIT repository at Savannah
https://savannah.gnu.org/git/?group=gawk
Detailed instructions on using and contributing to gawk can also be
found there 
http://savannah.gnu.org/maintenance/UsingGit


- How can I check out the GIT repository ?

Depending upon your working habits, there are several options.
1. On the Linux command line use the git command (details see below)
2. With Microsoft Windows, use TortoiseGIT
3. On both platforms Eclipse with its EGIT plugin is an excellent choice

On the Linux command line use git to check out the repository.
With Microsoft Windows, use TortoiseGIT.


- Where is TortoiseGIT and how do I install it ?

Follow these instructions for installation:
  https://github.com/multitheftauto/multitheftauto/wiki/how-to-use-tortoisegit

Begin with installing Putty, then msysgit and finally TortoiseGIT.
Find Putty at http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


- What about the SSH keys needed when Windows is my primary environment ?

On Windows you may use Puttygen for generating keys.
Save both keys (public and private) in a local .ppk file.
Notice that this file is highly confidential and even other
team members are not supposed to see your keys.
Finally you need to convert Putty's keys (.ppk file) so that they
can also be used on Linux.
  http://www.laszlomolnar.name/open-source/tips-and-tutorials/how-to-convert-puttys-private-key-ppk-into-opensshs-private-key-format-in-linux.html

  puttygen my_keys.ppk -O private-openssh -o .ssh/id_rsa
  puttygen my_keys.ppk -O public-openssh  -o .ssh/id_rsa.pub


- What about the SSH keys needed when Linux is my primary environment ?

On Linux follow these instructions to generate keys:
http://www.guyrutenberg.com/2007/10/05/ssh-keygen-tutorial-generating-rsa-and-dsa-keys/
If you ever need these keys inside a Windows environment, use Puttygen
to import the already existing keys.


- I know Subversion, now what's different with git ?

Read the "Git - SVN Crash Course". It lists the Subversion commands that
are roughly equivalent to certain git commands:
  http://www.pronego.com/helpdesk/knowledgebase.php?article=49
This document is only one of many copies of the document on the Internet.
You should read the original (which is currently offline and unreachable):
  https://git.wiki.kernel.org/index.php/GitSvnCrashCourse


- How can I check out this repository inside a clean subdirectory ?

  mkdir -p workspace/git
  cd workspace/git
  git clone git://git.sv.gnu.org/project.git

  git remote -v
  origin  ssh://jkahrs@git.sv.gnu.org/srv/git/gawk.git (fetch)
  origin  ssh://jkahrs@git.sv.gnu.org/srv/git/gawk.git (push)


- How can I check out this repository with Eclipse ?

Use the most recent version of Eclipse, it already comes with the
EGIT plugin installed.
   Select File -> Import -> Git -> Git Repository.
   Press clone and maintain the git repository "ssh://jkahrs@git.sv.gnu.org/srv/git/gawk.git".
   You only have to paste the URL to the first line of the dialog,
   the rest will be filled out automatically.

You can find details in the EGIT tutorial.
  http://www.vogella.de/articles/EGit/article.html#respository_checkoutproject


- Can I start adding new files to the repository right now ?
Yes, you can, but you should not do so.
Convention with branches.

But first you should make sure some global settings identifying
you are set. The global settings will be used every time you commit
something to the repository.

  git config --global user.name "First-Name Last-Name"
  git config --global user.email email@address.site
  git config --global color.ui auto


- How can I inspect my settings ?


  git config --list
  giggle.main-window-maximized=false
  giggle.main-window-geometry=1369x753+183+81
  giggle.main-window-view=HistoryView
  giggle.history-view-vpane-position=389
  giggle.file-view-vpane-position=293
  user.name=First-Name Last-Name
  user.email=email@address.site
  color.diff=auto
  color.status=auto
  color.branch=auto
  gui.spellingdictionary=en_US
  core.repositoryformatversion=0
  core.filemode=true
  core.bare=false
  core.logallrefupdates=true
  remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
  remote.origin.url=ssh://jkahrs@git.sv.gnu.org/srv/git/gawk.git
  branch.master.remote=origin
  branch.master.merge=refs/heads/master
  branch.xgawk_load.remote=origin
  branch.xgawk_load.merge=refs/heads/xgawk_load


- How can I get or set a specific variable of the settings ?

  git config --get color.ui
  git config --set color.ui auto


- How can I create new files or directories to the repository ?

  touch README
  git add README
  git commit -m "first commit"


- What did I change since the last commit ?

  git diff README
  git diff


- I have committed everything to my local repository, now how can I
  "push" these changes up to gawk.git ?

  git push -u origin master              # push up to master branch
  git push -u origin my_feature_branch   # push up to my own branch


- How can I inspect the list of branches of my repository ?

  git branch                # shows all local branches
  git branch -r             # shows all remote branches
  git branch -a             # shows all local and all remote branches


- How can I change to a different branch ?

  git checkout    my_stuff  # change to branch my_stuff
  git checkout -b my_stuff  # create new branch my_stuff and change to it

- How can I create a branch ?

For each new feature to be considered for inclusion into future
releasses, a new branch shall be created. Upon creation, this new
branch shall be based on the master branch.

  # make master branch the base
  git checkout master
  git branch my_new_feature_branch
  touch my_new_file.c
  git add my_new_file.c
  git status
  git commit -m "Created new feature branch."
  git push -u origin my_new_feature_branch
  git checkout my_new_feature_branch

- How can I throw away an obsolete branch ?

  git push origin :newfeature      # remove remote branch
  git checkout -f master           # switch back from newfeature to master, ignoring changes
  git branch -D newfeature         # remove local branch


- I have made stupid changes to a file and want the original back, how ?

  svn checkout file_name.ext

  This will only work if the file was not yet committed.
  If you have already committed the change and want back the
  last pushed version, use "git reset" instead. 


- Who changed a specific line in my file ?

Sometimes you need to find out whom to blame for a certain line of a change.
git can tell you for each line who did the most recent change of the line.

  git blame README


- Who else has ever changed my file, when and why ?

You can inspect the log history file-wise but also directory-wise.

  git log README
  git log


- How to fix a broken repository ?

  git fsck

- How to clean up my repository (garbage collection) ?

  git gc


Thanks,

Arnold Robbins
Gawk Maintainer