commonmarker 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of commonmarker might be problematic. Click here for more details.

Files changed (501) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -2
  3. data/README.md +67 -42
  4. data/Rakefile +22 -2
  5. data/commonmarker.gemspec +13 -9
  6. data/ext/commonmarker/cmark/api_test/main.c +35 -0
  7. data/ext/commonmarker/cmark/build/CMakeFiles/CMakeError.log +12 -12
  8. data/ext/commonmarker/cmark/build/CMakeFiles/CMakeOutput.log +141 -141
  9. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/main.c.o +0 -0
  10. data/ext/commonmarker/cmark/build/api_test/api_test +0 -0
  11. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/houdini_html_u.c.o +0 -0
  12. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/iterator.c.o +0 -0
  13. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/houdini_html_u.c.o +0 -0
  14. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/iterator.c.o +0 -0
  15. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/houdini_html_u.c.o +0 -0
  16. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/iterator.c.o +0 -0
  17. data/ext/commonmarker/cmark/build/src/cmark +0 -0
  18. data/ext/commonmarker/cmark/build/src/libcmark.0.19.0.dylib +0 -0
  19. data/ext/commonmarker/cmark/build/src/libcmark.a +0 -0
  20. data/ext/commonmarker/cmark/build/src/libcmark.dylib +0 -0
  21. data/ext/commonmarker/cmark/src/houdini_html_u.c +26 -13
  22. data/ext/commonmarker/cmark/src/iterator.c +2 -2
  23. data/ext/commonmarker/cmark/test/__pycache__/cmark.cpython-34.pyc +0 -0
  24. data/ext/commonmarker/cmark/test/__pycache__/normalize.cpython-34.pyc +0 -0
  25. data/ext/commonmarker/cmark/test/cmark.pyc +0 -0
  26. data/ext/commonmarker/cmark/test/normalize.pyc +0 -0
  27. data/ext/commonmarker/commonmarker.c +276 -3
  28. data/ext/commonmarker/extconf.rb +3 -1
  29. data/lib/commonmarker.rb +70 -360
  30. data/lib/commonmarker/config.rb +1 -1
  31. data/lib/commonmarker/renderer.rb +91 -0
  32. data/lib/commonmarker/renderer/html_renderer.rb +149 -0
  33. data/lib/commonmarker/version.rb +1 -1
  34. data/test/benchinput.md +148414 -0
  35. data/test/benchmark.rb +13 -9
  36. data/test/progit/Gemfile +5 -0
  37. data/test/progit/README.md +9 -0
  38. data/test/progit/README.original.md +70 -0
  39. data/test/progit/Rakefile +285 -0
  40. data/test/progit/ar/01-introduction/01-chapter1.markdown +264 -0
  41. data/test/progit/ar/02-git-basics/01-chapter2.markdown +1124 -0
  42. data/test/progit/ar/NOTES +18 -0
  43. data/test/progit/ar/README +14 -0
  44. data/test/progit/az/01-introduction/01-chapter1.markdown +257 -0
  45. data/test/progit/az/02-git-basics/01-chapter2.markdown +1127 -0
  46. data/test/progit/az/03-git-branching/01-chapter3.markdown +598 -0
  47. data/test/progit/az/04-git-server/01-chapter4.markdown +861 -0
  48. data/test/progit/az/05-distributed-git/01-chapter5.markdown +897 -0
  49. data/test/progit/az/06-git-tools/01-chapter6.markdown +1126 -0
  50. data/test/progit/az/07-customizing-git/01-chapter7.markdown +937 -0
  51. data/test/progit/az/08-git-and-other-scms/01-chapter8.markdown +690 -0
  52. data/test/progit/az/09-git-internals/01-chapter9.markdown +977 -0
  53. data/test/progit/be/01-introduction/01-chapter1.markdown +257 -0
  54. data/test/progit/be/02-git-basics/01-chapter2.markdown +1126 -0
  55. data/test/progit/ca/01-introduction/01-chapter1.markdown +257 -0
  56. data/test/progit/ca/README.txt +1 -0
  57. data/test/progit/couchapp/Makefile +41 -0
  58. data/test/progit/couchapp/Readme.md +17 -0
  59. data/test/progit/couchapp/_id +1 -0
  60. data/test/progit/couchapp/shows/chapter.js +14 -0
  61. data/test/progit/couchapp/templates/foot.html +7 -0
  62. data/test/progit/couchapp/templates/head.html +51 -0
  63. data/test/progit/couchapp/vendor/markdown/showdown.js +420 -0
  64. data/test/progit/couchapp/vendor/mustache.js/mustache.js +302 -0
  65. data/test/progit/cs/01-introduction/01-chapter1.markdown +259 -0
  66. data/test/progit/cs/02-git-basics/01-chapter2.markdown +1225 -0
  67. data/test/progit/cs/03-git-branching/01-chapter3.markdown +606 -0
  68. data/test/progit/cs/04-git-server/01-chapter4.markdown +871 -0
  69. data/test/progit/cs/05-distributed-git/01-chapter5.markdown +914 -0
  70. data/test/progit/cs/06-git-tools/01-chapter6.markdown +1167 -0
  71. data/test/progit/cs/07-customizing-git/01-chapter7.markdown +940 -0
  72. data/test/progit/cs/08-git-and-other-scms/01-chapter8.markdown +700 -0
  73. data/test/progit/cs/09-git-internals/01-chapter9.markdown +1014 -0
  74. data/test/progit/de/01-introduction/01-chapter1.markdown +445 -0
  75. data/test/progit/de/02-git-basics/01-chapter2.markdown +1589 -0
  76. data/test/progit/de/03-git-branching/01-chapter3.markdown +964 -0
  77. data/test/progit/de/04-git-server/01-chapter4.markdown +1337 -0
  78. data/test/progit/de/05-distributed-git/01-chapter5.markdown +1329 -0
  79. data/test/progit/de/06-git-tools/01-chapter6.markdown +1502 -0
  80. data/test/progit/de/07-customizing-git/01-chapter7.markdown +1361 -0
  81. data/test/progit/de/08-git-and-other-scms/01-chapter8.markdown +919 -0
  82. data/test/progit/de/09-git-internals/01-chapter9.markdown +1361 -0
  83. data/test/progit/de/README.md +626 -0
  84. data/test/progit/ebooks/cover.png +0 -0
  85. data/test/progit/en/01-introduction/01-chapter1.markdown +263 -0
  86. data/test/progit/en/02-git-basics/01-chapter2.markdown +1228 -0
  87. data/test/progit/en/03-git-branching/01-chapter3.markdown +606 -0
  88. data/test/progit/en/04-git-server/01-chapter4.markdown +871 -0
  89. data/test/progit/en/05-distributed-git/01-chapter5.markdown +914 -0
  90. data/test/progit/en/06-git-tools/01-chapter6.markdown +1150 -0
  91. data/test/progit/en/07-customizing-git/01-chapter7.markdown +940 -0
  92. data/test/progit/en/08-git-and-other-scms/01-chapter8.markdown +700 -0
  93. data/test/progit/en/09-git-internals/01-chapter9.markdown +983 -0
  94. data/test/progit/eo/01-introduction/01-chapter1.markdown +257 -0
  95. data/test/progit/eo/02-git-basics/01-chapter2.markdown +1171 -0
  96. data/test/progit/epub/ProGit.css +28 -0
  97. data/test/progit/epub/title.png +0 -0
  98. data/test/progit/es-ni/01-introduction/01-chapter1.markdown +257 -0
  99. data/test/progit/es-ni/02-git-basics/01-chapter2.markdown +1127 -0
  100. data/test/progit/es/01-introduction/01-chapter1.markdown +262 -0
  101. data/test/progit/es/02-git-basics/01-chapter2.markdown +1165 -0
  102. data/test/progit/es/03-git-branching/01-chapter3.markdown +598 -0
  103. data/test/progit/es/04-git-server/01-chapter4.markdown +707 -0
  104. data/test/progit/es/05-distributed-git/01-chapter5.markdown +890 -0
  105. data/test/progit/es/06-git-tools/01-chapter6.markdown +1113 -0
  106. data/test/progit/es/07-customizing-git/01-chapter7.markdown +875 -0
  107. data/test/progit/es/08-git-and-other-scms/01-chapter8.markdown +686 -0
  108. data/test/progit/es/09-git-internals/01-chapter9.markdown +976 -0
  109. data/test/progit/es/NOTES +29 -0
  110. data/test/progit/es/README +3 -0
  111. data/test/progit/es/glosario-Benzirpi.txt +27 -0
  112. data/test/progit/es/omegat-Benzirpi.tmx +29075 -0
  113. data/test/progit/fa/01-introduction/01-chapter1.markdown +262 -0
  114. data/test/progit/fa/03-git-branching/01-chapter3.markdown +608 -0
  115. data/test/progit/fa/04-git-server/01-chapter4.markdown +872 -0
  116. data/test/progit/fa/NOTES.en-fa.md +143 -0
  117. data/test/progit/fa/README.md +7 -0
  118. data/test/progit/fi/01-introduction/01-chapter1.markdown +259 -0
  119. data/test/progit/fi/02-git-basics/01-chapter2.markdown +1171 -0
  120. data/test/progit/fi/NOTES +5 -0
  121. data/test/progit/figures-dia/fig0101.dia +617 -0
  122. data/test/progit/figures-dia/fig0102.dia +921 -0
  123. data/test/progit/figures-dia/fig0103.dia +1468 -0
  124. data/test/progit/figures-dia/fig0104.dia +1432 -0
  125. data/test/progit/figures-dia/fig0105.dia +1924 -0
  126. data/test/progit/figures-dia/fig0106.dia +562 -0
  127. data/test/progit/figures-dia/fig0201.dia +774 -0
  128. data/test/progit/figures-dia/fig0301.dia +2006 -0
  129. data/test/progit/figures-dia/fig0302.dia +2148 -0
  130. data/test/progit/figures-dia/fig0303.dia +719 -0
  131. data/test/progit/figures-dia/fig0304.dia +525 -0
  132. data/test/progit/figures-dia/fig0305.dia +622 -0
  133. data/test/progit/figures-dia/fig0306.dia +622 -0
  134. data/test/progit/figures-dia/fig0307.dia +719 -0
  135. data/test/progit/figures-dia/fig0308.dia +734 -0
  136. data/test/progit/figures-dia/fig0309.dia +831 -0
  137. data/test/progit/figures-dia/fig0310.dia +412 -0
  138. data/test/progit/figures-dia/fig0311.dia +493 -0
  139. data/test/progit/figures-dia/fig0312.dia +596 -0
  140. data/test/progit/figures-dia/fig0313.dia +774 -0
  141. data/test/progit/figures-dia/fig0314.dia +846 -0
  142. data/test/progit/figures-dia/fig0315.dia +787 -0
  143. data/test/progit/figures-dia/fig0316.dia +1078 -0
  144. data/test/progit/figures-dia/fig0317.dia +881 -0
  145. data/test/progit/figures-dia/fig0318.dia +968 -0
  146. data/test/progit/figures-dia/fig0319.dia +957 -0
  147. data/test/progit/figures-dia/fig0320.dia +1637 -0
  148. data/test/progit/figures-dia/fig0321.dia +1494 -0
  149. data/test/progit/figures-dia/fig0322.dia +1142 -0
  150. data/test/progit/figures-dia/fig0323.dia +1377 -0
  151. data/test/progit/figures-dia/fig0324.dia +1603 -0
  152. data/test/progit/figures-dia/fig0325.dia +2003 -0
  153. data/test/progit/figures-dia/fig0326.dia +2013 -0
  154. data/test/progit/figures-dia/fig0327.dia +687 -0
  155. data/test/progit/figures-dia/fig0328.dia +814 -0
  156. data/test/progit/figures-dia/fig0329.dia +793 -0
  157. data/test/progit/figures-dia/fig0330.dia +693 -0
  158. data/test/progit/figures-dia/fig0331.dia +1159 -0
  159. data/test/progit/figures-dia/fig0332.dia +1362 -0
  160. data/test/progit/figures-dia/fig0333.dia +1165 -0
  161. data/test/progit/figures-dia/fig0334.dia +1450 -0
  162. data/test/progit/figures-dia/fig0335.dia +994 -0
  163. data/test/progit/figures-dia/fig0336.dia +786 -0
  164. data/test/progit/figures-dia/fig0337.dia +1546 -0
  165. data/test/progit/figures-dia/fig0338.dia +1755 -0
  166. data/test/progit/figures-dia/fig0339.dia +1882 -0
  167. data/test/progit/figures-dia/fig0501.dia +456 -0
  168. data/test/progit/figures-dia/fig0502.dia +956 -0
  169. data/test/progit/figures-dia/fig0503.dia +915 -0
  170. data/test/progit/figures-dia/fig0504.dia +620 -0
  171. data/test/progit/figures-dia/fig0505.dia +744 -0
  172. data/test/progit/figures-dia/fig0506.dia +747 -0
  173. data/test/progit/figures-dia/fig0507.dia +895 -0
  174. data/test/progit/figures-dia/fig0508.dia +1122 -0
  175. data/test/progit/figures-dia/fig0509.dia +1243 -0
  176. data/test/progit/figures-dia/fig0510.dia +1240 -0
  177. data/test/progit/figures-dia/fig0511.dia +1201 -0
  178. data/test/progit/figures-dia/fig0512.dia +801 -0
  179. data/test/progit/figures-dia/fig0513.dia +1387 -0
  180. data/test/progit/figures-dia/fig0514.dia +1568 -0
  181. data/test/progit/figures-dia/fig0515.dia +1721 -0
  182. data/test/progit/figures-dia/fig0516.dia +997 -0
  183. data/test/progit/figures-dia/fig0517.dia +994 -0
  184. data/test/progit/figures-dia/fig0518.dia +1145 -0
  185. data/test/progit/figures-dia/fig0519.dia +992 -0
  186. data/test/progit/figures-dia/fig0520.dia +1240 -0
  187. data/test/progit/figures-dia/fig0521.dia +801 -0
  188. data/test/progit/figures-dia/fig0522.dia +922 -0
  189. data/test/progit/figures-dia/fig0523.dia +922 -0
  190. data/test/progit/figures-dia/fig0524.dia +1828 -0
  191. data/test/progit/figures-dia/fig0525.dia +2685 -0
  192. data/test/progit/figures-dia/fig0526.dia +717 -0
  193. data/test/progit/figures-dia/fig0527.dia +856 -0
  194. data/test/progit/figures-dia/fig0601.dia +790 -0
  195. data/test/progit/figures-dia/fig0702.dia +795 -0
  196. data/test/progit/figures-dia/fig0703.dia +795 -0
  197. data/test/progit/figures-dia/fig0901.dia +669 -0
  198. data/test/progit/figures-dia/fig0902.dia +834 -0
  199. data/test/progit/figures-dia/fig0903.dia +1483 -0
  200. data/test/progit/figures-dia/fig0904.dia +1728 -0
  201. data/test/progit/figures-dia/makeimages +25 -0
  202. data/test/progit/figures-source/progit.graffle +123108 -0
  203. data/test/progit/figures/18333fig0101-tn.png +0 -0
  204. data/test/progit/figures/18333fig0102-tn.png +0 -0
  205. data/test/progit/figures/18333fig0103-tn.png +0 -0
  206. data/test/progit/figures/18333fig0104-tn.png +0 -0
  207. data/test/progit/figures/18333fig0105-tn.png +0 -0
  208. data/test/progit/figures/18333fig0106-tn.png +0 -0
  209. data/test/progit/figures/18333fig0107-tn.png +0 -0
  210. data/test/progit/figures/18333fig0201-tn.png +0 -0
  211. data/test/progit/figures/18333fig0202-tn.png +0 -0
  212. data/test/progit/figures/18333fig0301-tn.png +0 -0
  213. data/test/progit/figures/18333fig0302-tn.png +0 -0
  214. data/test/progit/figures/18333fig0303-tn.png +0 -0
  215. data/test/progit/figures/18333fig0304-tn.png +0 -0
  216. data/test/progit/figures/18333fig0305-tn.png +0 -0
  217. data/test/progit/figures/18333fig0306-tn.png +0 -0
  218. data/test/progit/figures/18333fig0307-tn.png +0 -0
  219. data/test/progit/figures/18333fig0308-tn.png +0 -0
  220. data/test/progit/figures/18333fig0309-tn.png +0 -0
  221. data/test/progit/figures/18333fig0310-tn.png +0 -0
  222. data/test/progit/figures/18333fig0311-tn.png +0 -0
  223. data/test/progit/figures/18333fig0312-tn.png +0 -0
  224. data/test/progit/figures/18333fig0313-tn.png +0 -0
  225. data/test/progit/figures/18333fig0314-tn.png +0 -0
  226. data/test/progit/figures/18333fig0315-tn.png +0 -0
  227. data/test/progit/figures/18333fig0316-tn.png +0 -0
  228. data/test/progit/figures/18333fig0317-tn.png +0 -0
  229. data/test/progit/figures/18333fig0318-tn.png +0 -0
  230. data/test/progit/figures/18333fig0319-tn.png +0 -0
  231. data/test/progit/figures/18333fig0320-tn.png +0 -0
  232. data/test/progit/figures/18333fig0321-tn.png +0 -0
  233. data/test/progit/figures/18333fig0322-tn.png +0 -0
  234. data/test/progit/figures/18333fig0323-tn.png +0 -0
  235. data/test/progit/figures/18333fig0324-tn.png +0 -0
  236. data/test/progit/figures/18333fig0325-tn.png +0 -0
  237. data/test/progit/figures/18333fig0326-tn.png +0 -0
  238. data/test/progit/figures/18333fig0327-tn.png +0 -0
  239. data/test/progit/figures/18333fig0328-tn.png +0 -0
  240. data/test/progit/figures/18333fig0329-tn.png +0 -0
  241. data/test/progit/figures/18333fig0330-tn.png +0 -0
  242. data/test/progit/figures/18333fig0331-tn.png +0 -0
  243. data/test/progit/figures/18333fig0332-tn.png +0 -0
  244. data/test/progit/figures/18333fig0333-tn.png +0 -0
  245. data/test/progit/figures/18333fig0334-tn.png +0 -0
  246. data/test/progit/figures/18333fig0335-tn.png +0 -0
  247. data/test/progit/figures/18333fig0336-tn.png +0 -0
  248. data/test/progit/figures/18333fig0337-tn.png +0 -0
  249. data/test/progit/figures/18333fig0338-tn.png +0 -0
  250. data/test/progit/figures/18333fig0339-tn.png +0 -0
  251. data/test/progit/figures/18333fig0401-tn.png +0 -0
  252. data/test/progit/figures/18333fig0402-tn.png +0 -0
  253. data/test/progit/figures/18333fig0403-tn.png +0 -0
  254. data/test/progit/figures/18333fig0404-tn.png +0 -0
  255. data/test/progit/figures/18333fig0405-tn.png +0 -0
  256. data/test/progit/figures/18333fig0406-tn.png +0 -0
  257. data/test/progit/figures/18333fig0407-tn.png +0 -0
  258. data/test/progit/figures/18333fig0408-tn.png +0 -0
  259. data/test/progit/figures/18333fig0409-tn.png +0 -0
  260. data/test/progit/figures/18333fig0410-tn.png +0 -0
  261. data/test/progit/figures/18333fig0411-tn.png +0 -0
  262. data/test/progit/figures/18333fig0412-tn.png +0 -0
  263. data/test/progit/figures/18333fig0413-tn.png +0 -0
  264. data/test/progit/figures/18333fig0414-tn.png +0 -0
  265. data/test/progit/figures/18333fig0415-tn.png +0 -0
  266. data/test/progit/figures/18333fig0501-tn.png +0 -0
  267. data/test/progit/figures/18333fig0502-tn.png +0 -0
  268. data/test/progit/figures/18333fig0503-tn.png +0 -0
  269. data/test/progit/figures/18333fig0504-tn.png +0 -0
  270. data/test/progit/figures/18333fig0505-tn.png +0 -0
  271. data/test/progit/figures/18333fig0506-tn.png +0 -0
  272. data/test/progit/figures/18333fig0507-tn.png +0 -0
  273. data/test/progit/figures/18333fig0508-tn.png +0 -0
  274. data/test/progit/figures/18333fig0509-tn.png +0 -0
  275. data/test/progit/figures/18333fig0510-tn.png +0 -0
  276. data/test/progit/figures/18333fig0511-tn.png +0 -0
  277. data/test/progit/figures/18333fig0512-tn.png +0 -0
  278. data/test/progit/figures/18333fig0513-tn.png +0 -0
  279. data/test/progit/figures/18333fig0514-tn.png +0 -0
  280. data/test/progit/figures/18333fig0515-tn.png +0 -0
  281. data/test/progit/figures/18333fig0516-tn.png +0 -0
  282. data/test/progit/figures/18333fig0517-tn.png +0 -0
  283. data/test/progit/figures/18333fig0518-tn.png +0 -0
  284. data/test/progit/figures/18333fig0519-tn.png +0 -0
  285. data/test/progit/figures/18333fig0520-tn.png +0 -0
  286. data/test/progit/figures/18333fig0521-tn.png +0 -0
  287. data/test/progit/figures/18333fig0522-tn.png +0 -0
  288. data/test/progit/figures/18333fig0523-tn.png +0 -0
  289. data/test/progit/figures/18333fig0524-tn.png +0 -0
  290. data/test/progit/figures/18333fig0525-tn.png +0 -0
  291. data/test/progit/figures/18333fig0526-tn.png +0 -0
  292. data/test/progit/figures/18333fig0527-tn.png +0 -0
  293. data/test/progit/figures/18333fig0601-tn.png +0 -0
  294. data/test/progit/figures/18333fig0701-tn.png +0 -0
  295. data/test/progit/figures/18333fig0702-tn.png +0 -0
  296. data/test/progit/figures/18333fig0703-tn.png +0 -0
  297. data/test/progit/figures/18333fig0901-tn.png +0 -0
  298. data/test/progit/figures/18333fig0902-tn.png +0 -0
  299. data/test/progit/figures/18333fig0903-tn.png +0 -0
  300. data/test/progit/figures/18333fig0904-tn.png +0 -0
  301. data/test/progit/fr/01-introduction/01-chapter1.markdown +371 -0
  302. data/test/progit/fr/02-git-basics/01-chapter2.markdown +1378 -0
  303. data/test/progit/fr/03-git-branching/01-chapter3.markdown +781 -0
  304. data/test/progit/fr/04-git-server/01-chapter4.markdown +1141 -0
  305. data/test/progit/fr/05-distributed-git/01-chapter5.markdown +1163 -0
  306. data/test/progit/fr/06-git-tools/01-chapter6.markdown +1356 -0
  307. data/test/progit/fr/07-customizing-git/01-chapter7.markdown +1200 -0
  308. data/test/progit/fr/08-git-and-other-scms/01-chapter8.markdown +832 -0
  309. data/test/progit/fr/09-git-internals/01-chapter9.markdown +1228 -0
  310. data/test/progit/fr/NOTES.fr-fr.markdown +1 -0
  311. data/test/progit/fr/NOTES.fr-fr.md +127 -0
  312. data/test/progit/fr/README.md +43 -0
  313. data/test/progit/fr/glossaire-git.adoc +108 -0
  314. data/test/progit/hi/01-introduction/01-chapter1.markdown +7 -0
  315. data/test/progit/hu/01-introduction/01-chapter1.markdown +257 -0
  316. data/test/progit/id/01-introduction/01-chapter1.markdown +257 -0
  317. data/test/progit/id/02-git-basics/01-chapter2.markdown +1127 -0
  318. data/test/progit/id/03-git-branching/01-chapter3.markdown +598 -0
  319. data/test/progit/it/01-introduction/01-chapter1.markdown +263 -0
  320. data/test/progit/it/02-git-basics/01-chapter2.markdown +1227 -0
  321. data/test/progit/it/03-git-branching/01-chapter3.markdown +598 -0
  322. data/test/progit/it/04-git-server/01-chapter4.markdown +864 -0
  323. data/test/progit/it/05-distributed-git/01-chapter5.markdown +897 -0
  324. data/test/progit/it/06-git-tools/01-chapter6.markdown +1144 -0
  325. data/test/progit/it/07-customizing-git/01-chapter7.markdown +606 -0
  326. data/test/progit/it/08-git-and-other-scms/01-chapter8.markdown +707 -0
  327. data/test/progit/it/09-git-internals/01-chapter9.markdown +1000 -0
  328. data/test/progit/ja/01-introduction/01-chapter1.markdown +260 -0
  329. data/test/progit/ja/02-git-basics/01-chapter2.markdown +1221 -0
  330. data/test/progit/ja/03-git-branching/01-chapter3.markdown +604 -0
  331. data/test/progit/ja/04-git-server/01-chapter4.markdown +863 -0
  332. data/test/progit/ja/05-distributed-git/01-chapter5.markdown +908 -0
  333. data/test/progit/ja/06-git-tools/01-chapter6.markdown +1133 -0
  334. data/test/progit/ja/07-customizing-git/01-chapter7.markdown +936 -0
  335. data/test/progit/ja/08-git-and-other-scms/01-chapter8.markdown +690 -0
  336. data/test/progit/ja/09-git-internals/01-chapter9.markdown +984 -0
  337. data/test/progit/ja/README.md +58 -0
  338. data/test/progit/ja/translation glossaries.txt +33 -0
  339. data/test/progit/ko/01-introduction/01-chapter1.markdown +258 -0
  340. data/test/progit/ko/02-git-basics/01-chapter2.markdown +1181 -0
  341. data/test/progit/ko/03-git-branching/01-chapter3.markdown +612 -0
  342. data/test/progit/ko/04-git-server/01-chapter4.markdown +867 -0
  343. data/test/progit/ko/05-distributed-git/01-chapter5.markdown +913 -0
  344. data/test/progit/ko/06-git-tools/01-chapter6.markdown +1142 -0
  345. data/test/progit/ko/07-customizing-git/01-chapter7.markdown +935 -0
  346. data/test/progit/ko/08-git-and-other-scms/01-chapter8.markdown +688 -0
  347. data/test/progit/ko/09-git-internals/01-chapter9.markdown +976 -0
  348. data/test/progit/ko/README.md +75 -0
  349. data/test/progit/ko/translation_guide.txt +65 -0
  350. data/test/progit/latex/README +27 -0
  351. data/test/progit/latex/config.yml +144 -0
  352. data/test/progit/latex/makepdf +207 -0
  353. data/test/progit/latex/template.tex +155 -0
  354. data/test/progit/makeebooks +125 -0
  355. data/test/progit/makepdfs +47 -0
  356. data/test/progit/mk/01-introduction/01-chapter1.markdown +258 -0
  357. data/test/progit/mk/02-git-basics/01-chapter2.markdown +1125 -0
  358. data/test/progit/mk/03-git-branching/01-chapter3.markdown +598 -0
  359. data/test/progit/mk/05-distributed-git/01-chapter5.markdown +897 -0
  360. data/test/progit/nl/01-introduction/01-chapter1.markdown +296 -0
  361. data/test/progit/nl/02-git-basics/01-chapter2.markdown +1253 -0
  362. data/test/progit/nl/03-git-branching/01-chapter3.markdown +642 -0
  363. data/test/progit/nl/04-git-server/01-chapter4.markdown +902 -0
  364. data/test/progit/nl/05-distributed-git/01-chapter5.markdown +953 -0
  365. data/test/progit/nl/06-git-tools/01-chapter6.markdown +1177 -0
  366. data/test/progit/nl/07-customizing-git/01-chapter7.markdown +974 -0
  367. data/test/progit/nl/08-git-and-other-scms/01-chapter8.markdown +725 -0
  368. data/test/progit/nl/09-git-internals/01-chapter9.markdown +1013 -0
  369. data/test/progit/no-nb/01-introduction/01-chapter1.markdown +261 -0
  370. data/test/progit/no-nb/02-git-basics/01-chapter2.markdown +1225 -0
  371. data/test/progit/no-nb/03-git-branching/01-chapter3.markdown +606 -0
  372. data/test/progit/no-nb/04-git-server/01-chapter4.markdown +867 -0
  373. data/test/progit/no-nb/05-distributed-git/01-chapter5.markdown +914 -0
  374. data/test/progit/no-nb/06-git-tools/01-chapter6.markdown +1144 -0
  375. data/test/progit/no-nb/07-customizing-git/01-chapter7.markdown +936 -0
  376. data/test/progit/no-nb/08-git-and-other-scms/01-chapter8.markdown +689 -0
  377. data/test/progit/no-nb/09-git-internals/01-chapter9.markdown +977 -0
  378. data/test/progit/no-nb/README +2 -0
  379. data/test/progit/pl/01-introduction/01-chapter1.markdown +257 -0
  380. data/test/progit/pl/02-git-basics/02-chapter2.markdown +1128 -0
  381. data/test/progit/pl/03-git-branching/01-chapter3.markdown +598 -0
  382. data/test/progit/pl/04-git-server/01-chapter4.markdown +897 -0
  383. data/test/progit/pl/05-distributed-git/01-chapter5.markdown +1278 -0
  384. data/test/progit/pl/06-git-tools/01-chapter6.markdown +1550 -0
  385. data/test/progit/pl/07-customizing-git/01-chapter7.markdown +1058 -0
  386. data/test/progit/pl/08-git-and-other-scms/01-chapter8.markdown +948 -0
  387. data/test/progit/pl/09-git-internals/01-chapter9.markdown +1382 -0
  388. data/test/progit/pl/translation-guidelines.txt +70 -0
  389. data/test/progit/pt-br/01-introduction/01-chapter1.markdown +256 -0
  390. data/test/progit/pt-br/02-git-basics/01-chapter2.markdown +1127 -0
  391. data/test/progit/pt-br/03-git-branching/01-chapter3.markdown +596 -0
  392. data/test/progit/pt-br/04-git-server/01-chapter4.markdown +888 -0
  393. data/test/progit/pt-br/05-distributed-git/01-chapter5.markdown +896 -0
  394. data/test/progit/pt-br/06-git-tools/01-chapter6.markdown +1122 -0
  395. data/test/progit/pt-br/07-customizing-git/01-chapter7.markdown +932 -0
  396. data/test/progit/pt-br/08-git-and-other-scms/01-chapter8.markdown +691 -0
  397. data/test/progit/pt-br/09-git-internals/01-chapter9.markdown +978 -0
  398. data/test/progit/pt-br/figures-dia/fig0101.dia +617 -0
  399. data/test/progit/pt-br/figures-dia/fig0102.dia +921 -0
  400. data/test/progit/pt-br/figures-dia/fig0103.dia +1468 -0
  401. data/test/progit/pt-br/figures-dia/fig0104.dia +1432 -0
  402. data/test/progit/pt-br/figures-dia/fig0105.dia +1924 -0
  403. data/test/progit/pt-br/figures-dia/fig0106.dia +562 -0
  404. data/test/progit/pt-br/figures-dia/fig0201.dia +776 -0
  405. data/test/progit/pt-br/figures-dia/fig0301.dia +2006 -0
  406. data/test/progit/pt-br/figures-dia/fig0302.dia +2148 -0
  407. data/test/progit/pt-br/figures-dia/fig0316.dia +1079 -0
  408. data/test/progit/pt-br/figures-dia/fig0322.dia +1142 -0
  409. data/test/progit/pt-br/figures-dia/fig0323.dia +1407 -0
  410. data/test/progit/pt-br/figures-dia/fig0324.dia +1603 -0
  411. data/test/progit/pt-br/figures-dia/fig0325.dia +2003 -0
  412. data/test/progit/pt-br/figures-dia/fig0326.dia +2013 -0
  413. data/test/progit/pt-br/figures-dia/fig0336.dia +786 -0
  414. data/test/progit/pt-br/figures-dia/fig0337.dia +1546 -0
  415. data/test/progit/pt-br/figures-dia/fig0338.dia +1755 -0
  416. data/test/progit/pt-br/figures-dia/fig0339.dia +1882 -0
  417. data/test/progit/pt-br/figures-dia/fig0501.dia +456 -0
  418. data/test/progit/pt-br/figures-dia/fig0502.dia +965 -0
  419. data/test/progit/pt-br/figures-dia/fig0503.dia +914 -0
  420. data/test/progit/pt-br/figures-dia/fig0511.dia +1201 -0
  421. data/test/progit/pt-br/figures-dia/fig0515.dia +1721 -0
  422. data/test/progit/pt-br/figures-dia/fig0702.dia +795 -0
  423. data/test/progit/pt-br/figures-dia/fig0703.dia +795 -0
  424. data/test/progit/pt-br/figures-dia/fig0901.dia +669 -0
  425. data/test/progit/pt-br/figures-dia/fig0902.dia +834 -0
  426. data/test/progit/pt-br/figures-dia/fig0903.dia +1483 -0
  427. data/test/progit/pt-br/figures-dia/fig0904.dia +1728 -0
  428. data/test/progit/ro/01-introduction/01-chapter1.markdown +257 -0
  429. data/test/progit/ru/01-introduction/01-chapter1.markdown +259 -0
  430. data/test/progit/ru/02-git-basics/01-chapter2.markdown +1155 -0
  431. data/test/progit/ru/03-git-branching/01-chapter3.markdown +598 -0
  432. data/test/progit/ru/04-git-server/01-chapter4.markdown +854 -0
  433. data/test/progit/ru/05-distributed-git/01-chapter5.markdown +897 -0
  434. data/test/progit/ru/06-git-tools/01-chapter6.markdown +1126 -0
  435. data/test/progit/ru/07-customizing-git/01-chapter7.markdown +938 -0
  436. data/test/progit/ru/08-git-and-other-scms/01-chapter8.markdown +691 -0
  437. data/test/progit/ru/09-git-internals/01-chapter9.markdown +977 -0
  438. data/test/progit/ru/Glossary +38 -0
  439. data/test/progit/ru/README +12 -0
  440. data/test/progit/ru/figures-dia/fig0101.dia +647 -0
  441. data/test/progit/ru/figures-dia/fig0102.dia +1009 -0
  442. data/test/progit/ru/figures-dia/fig0103.dia +1468 -0
  443. data/test/progit/ru/figures-dia/fig0104.dia +1432 -0
  444. data/test/progit/ru/figures-dia/fig0105.dia +1924 -0
  445. data/test/progit/ru/figures-dia/fig0106.dia +561 -0
  446. data/test/progit/ru/figures-dia/fig0201.dia +774 -0
  447. data/test/progit/ru/figures-dia/fig0322.dia +1182 -0
  448. data/test/progit/ru/figures-dia/fig0323.dia +1457 -0
  449. data/test/progit/ru/figures-dia/fig0324.dia +1698 -0
  450. data/test/progit/ru/figures-dia/fig0325.dia +2101 -0
  451. data/test/progit/ru/figures-dia/fig0326.dia +2111 -0
  452. data/test/progit/ru/figures-dia/fig0336.dia +786 -0
  453. data/test/progit/ru/figures-dia/fig0337.dia +1546 -0
  454. data/test/progit/ru/figures-dia/fig0338.dia +1755 -0
  455. data/test/progit/ru/figures-dia/fig0339.dia +1882 -0
  456. data/test/progit/ru/figures-dia/fig0501.dia +477 -0
  457. data/test/progit/ru/figures-dia/fig0502.dia +1063 -0
  458. data/test/progit/ru/figures-dia/fig0503.dia +915 -0
  459. data/test/progit/ru/figures-dia/fig0511.dia +1201 -0
  460. data/test/progit/ru/figures-dia/fig0515.dia +1741 -0
  461. data/test/progit/ru/figures-dia/fig0702.dia +851 -0
  462. data/test/progit/ru/figures-dia/fig0703.dia +851 -0
  463. data/test/progit/sr/01-introduction/01-chapter1.markdown +257 -0
  464. data/test/progit/summary.rb +29 -0
  465. data/test/progit/th/01-introduction/01-chapter1.markdown +257 -0
  466. data/test/progit/th/02-git-basics/01-chapter2.markdown +1126 -0
  467. data/test/progit/th/README.md +47 -0
  468. data/test/progit/tr/01-introduction/01-chapter1.markdown +258 -0
  469. data/test/progit/tr/02-git-basics/01-chapter2.markdown +1129 -0
  470. data/test/progit/tr/03-git-branching/01-chapter3.markdown +598 -0
  471. data/test/progit/tr/04-git-server/01-chapter4.markdown +73 -0
  472. data/test/progit/tr/05-distributed-git/01-chapter5.markdown +215 -0
  473. data/test/progit/uk/01-introduction/01-chapter1.markdown +522 -0
  474. data/test/progit/vi/01-introduction/01-chapter1.markdown +259 -0
  475. data/test/progit/vi/02-git-basics/01-chapter2.markdown +1172 -0
  476. data/test/progit/vi/03-git-branching/01-chapter3.markdown +598 -0
  477. data/test/progit/zh-tw/01-introduction/01-chapter1.markdown +259 -0
  478. data/test/progit/zh-tw/02-git-basics/01-chapter2.markdown +1183 -0
  479. data/test/progit/zh-tw/03-git-branching/01-chapter3.markdown +604 -0
  480. data/test/progit/zh-tw/04-git-server/01-chapter4.markdown +866 -0
  481. data/test/progit/zh-tw/05-distributed-git/01-chapter5.markdown +912 -0
  482. data/test/progit/zh-tw/06-git-tools/01-chapter6.markdown +1139 -0
  483. data/test/progit/zh-tw/07-customizing-git/01-chapter7.markdown +932 -0
  484. data/test/progit/zh-tw/08-git-and-other-scms/01-chapter8.markdown +689 -0
  485. data/test/progit/zh-tw/09-git-internals/01-chapter9.markdown +977 -0
  486. data/test/progit/zh/01-introduction/01-chapter1.markdown +259 -0
  487. data/test/progit/zh/02-git-basics/01-chapter2.markdown +1177 -0
  488. data/test/progit/zh/03-git-branching/01-chapter3.markdown +604 -0
  489. data/test/progit/zh/04-git-server/01-chapter4.markdown +866 -0
  490. data/test/progit/zh/05-distributed-git/01-chapter5.markdown +912 -0
  491. data/test/progit/zh/06-git-tools/01-chapter6.markdown +1125 -0
  492. data/test/progit/zh/07-customizing-git/01-chapter7.markdown +935 -0
  493. data/test/progit/zh/08-git-and-other-scms/01-chapter8.markdown +689 -0
  494. data/test/progit/zh/09-git-internals/01-chapter9.markdown +976 -0
  495. data/test/spec_tests.json +4382 -4070
  496. data/test/test_basics.rb +1 -1
  497. data/test/test_helper.rb +1 -0
  498. data/test/test_maliciousness.rb +4 -2
  499. data/test/test_pathological_inputs.rb +31 -30
  500. data/test/test_spec.rb +5 -4
  501. metadata +972 -4
@@ -0,0 +1,155 @@
1
+ \documentclass[a4paper]{book}
2
+ \usepackage[
3
+ %urlbordercolor = {1 1 1},
4
+ %linkbordercolor = {1 1 1},
5
+ %citebordercolor = {1 1 1},
6
+ urlcolor = blue,
7
+ colorlinks = true,
8
+ citecolor = black,
9
+ linkcolor = black]{hyperref}
10
+ \usepackage{graphicx}
11
+ \usepackage{xltxtra}
12
+ \usepackage{fancyhdr}
13
+ \usepackage{booktabs}
14
+ \usepackage{indentfirst}
15
+ \usepackage{framed,color}
16
+ \usepackage{caption}
17
+ \usepackage{longtable}
18
+ \captionsetup{font=bf,position=below}
19
+
20
+ \usepackage{ctable}
21
+
22
+ \definecolor{shadecolor}{gray}{0.90}
23
+
24
+ \setromanfont[Mapping=tex-text,BoldFont=<%= config['bold'] %>]{<%= config['font'] %>}
25
+ \setmonofont[Scale=.85]{<%= config['mono'] %>}
26
+
27
+ \XeTeXlinebreaklocale{<%= lang %>}
28
+ <%= config['langrule'] %>
29
+
30
+ \settowidth{\parindent}{<%= config['indent'] %>}
31
+
32
+ \title{Pro Git}
33
+ \author{Scott Chacon}
34
+
35
+ \makeatletter
36
+ \let\savedauthor=\@author
37
+ \let\savedtitle=\@title
38
+ \def\imgwidth{.6\linewidth}
39
+ \def\maxwidth{\ifdim\Gin@nat@width>\imgwidth\imgwidth
40
+ \else\Gin@nat@width\fi}
41
+ \makeatother
42
+
43
+ \title{\textbf{\savedtitle}}
44
+ \author{\textbf{\savedauthor}\thanks{<%= config['thanks'] %>}}
45
+ \def\w3cdtfymd{\the\year-\ifnum\month<10 0\fi\the\month-\ifnum\day<10 0\fi\the\day}
46
+ \date{\w3cdtfymd}
47
+ \renewcommand{\thefootnote}{\fnsymbol{footnote}}
48
+
49
+ \makeatletter
50
+ \setlength\headheight{12\p@}
51
+ \setlength\headsep {.25in}
52
+ \setlength\topskip {10\p@}
53
+ \setlength\footskip{.35in}
54
+ \setlength\textwidth{400\p@}
55
+
56
+ \setlength\@tempdima{\paperheight}
57
+ \addtolength\@tempdima{-2in}
58
+ \divide\@tempdima\baselineskip
59
+ \@tempcnta=\@tempdima
60
+ \setlength\textheight{\@tempcnta\baselineskip}
61
+ \addtolength\textheight{\topskip}
62
+
63
+ \setlength\@tempdima {\paperwidth}
64
+ \addtolength\@tempdima {-\textwidth}
65
+ \setlength\oddsidemargin {\paperwidth}
66
+ \addtolength\oddsidemargin {-2.35in}
67
+ \addtolength\oddsidemargin {-\textwidth}
68
+ \setlength\marginparwidth {0pt}
69
+ \@settopoint\oddsidemargin
70
+ \@settopoint\marginparwidth
71
+ \setlength\evensidemargin {\paperwidth}
72
+ \addtolength\evensidemargin{-2.35in}
73
+ \addtolength\evensidemargin{-\textwidth}
74
+ \@settopoint\evensidemargin
75
+
76
+ \setlength\topmargin{\paperheight}
77
+ \addtolength\topmargin{-2in}
78
+ \addtolength\topmargin{-\headheight}
79
+ \addtolength\topmargin{-\headsep}
80
+ \addtolength\topmargin{-\textheight}
81
+ \addtolength\topmargin{-\footskip} % this might be wrong!
82
+ \addtolength\topmargin{-.5\topmargin}
83
+ \@settopoint\topmargin
84
+ \makeatother
85
+
86
+ \fancypagestyle{plain}{\fancyhf{}\fancyfoot[LE,RO]{\footnotesize\textbf\thepage}}
87
+ \pagestyle{plain}
88
+
89
+ \renewcommand{\headrulewidth}{0pt}
90
+ \renewcommand{\footrulewidth}{0pt}
91
+
92
+ \newcounter{img}[chapter]
93
+ \renewcommand{\theimg}{\thechapter.\arabic{img}}
94
+ \newcommand{\img}[1]{\begin{figure}[ht!]
95
+ \refstepcounter{img}
96
+ \label{img:\theimg}
97
+ \centering\IfFileExists{figures/\theimg.pdf}{\includegraphics[width=\maxwidth]{figures/\theimg.pdf}}{\includegraphics[width=\maxwidth]{figures/\theimg.png}}
98
+
99
+ \caption{#1}
100
+ \end{figure}}
101
+
102
+ \newcounter{tab}[chapter]
103
+ \renewcommand{\thetab}{\thechapter.\arabic{tab}}
104
+
105
+ \newcommand{\prechap}{<%= config['prechap'] %>}
106
+ \newcommand{\postchap}{<%= config['postchap'] %>}
107
+ \newcommand{\presect}{<%= config['presect'] %>}
108
+ \newcommand{\postsect}{<%= config['postsect'] %>}
109
+ \renewcommand{\chaptermark}[1]{\markboth{\textbf{\prechap \thechapter \postchap}\hspace*{1ex}#1}{}}
110
+ \renewcommand{\sectionmark}[1]{\markright{\textbf{\presect \thesection \postsect}\hspace*{1ex}#1}}
111
+ \newcommand{\chap}[1]{\newpage\thispagestyle{empty}\chapter{#1}\label{chap:\thechapter}}
112
+ \newcommand{\chapref}[1]{\hyperref[chap:#1]{\prechap #1\postchap}}
113
+ \newcommand{\imgref}[1]{\hyperref[img:#1]{<%= config['fig'] %>#1}}
114
+ \newcommand{\tabref}[1]{\hyperref[tab:#1]{<%= config['tab'] %>#1}}
115
+ \newcommand{\e}[1]{$ \times 10^{#1}$}
116
+ \renewcommand{\contentsname}{<%= config['con'] %>}
117
+ \renewcommand{\figurename}{<%= config['fig'] %>}
118
+ \renewcommand{\tablename}{<%= config['tab'] %>}
119
+
120
+ \makeatletter
121
+ \def\@makechapterhead#1{%
122
+ \vspace*{50\p@}%
123
+ {\parindent \z@ \raggedright \normalfont
124
+ \ifnum \c@secnumdepth >\m@ne
125
+ \if@mainmatter
126
+ \huge\bfseries \prechap \thechapter \postchap
127
+ \par\nobreak
128
+ \vskip 20\p@
129
+ \fi
130
+ \fi
131
+ \interlinepenalty\@M
132
+ \Huge \bfseries #1\par\nobreak
133
+ \vskip 40\p@
134
+ }}
135
+ \makeatother
136
+
137
+ \linespread{1.3}
138
+
139
+ \begin{document}
140
+ \frontmatter
141
+ \maketitle
142
+ \thispagestyle{empty}
143
+ \setcounter{tocdepth}{4}
144
+ \tableofcontents\newpage\thispagestyle{empty}
145
+
146
+ \mainmatter
147
+ \fancyhf{}
148
+ \fancyhead[LE]{{\small\leftmark}}
149
+ \fancyhead[RO]{{\small\rightmark}}
150
+ \fancyhead[RE,LO]{{\small\savedauthor\hspace*{1ex}\textbf{\savedtitle}}}
151
+ \fancyfoot[LE,RO]{\small\textbf\thepage}
152
+ \pagestyle{fancy}
153
+
154
+ <%= latex %>
155
+ \end{document}
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # This script convers markdown book to one of the serveral e-book
4
+ # formats supported with calibre (http://calibre-ebook.com)
5
+ #
6
+ # Samples:
7
+ #
8
+ # Build e-book for amazon kindle for english and russian languages
9
+ # $ ruby makeebooks en ru
10
+ # or
11
+ # $ FORMAT=mobi ruby makeebooks en ru
12
+ #
13
+ # Build e-book in 'epub' format for russian only
14
+ # $ FORMAT=epub ruby makeebooks ru
15
+
16
+ require 'rubygems'
17
+ require 'rdiscount'
18
+ require 'fileutils'
19
+ include FileUtils
20
+
21
+ def figures(lang,&block)
22
+ begin
23
+ Dir["figures/18333*.png"].each do |file|
24
+ cp(file, file.sub(/18333fig0(\d)0?(\d+)\-tn/, '\1.\2'))
25
+ end
26
+ Dir["#{lang}/figures/*.png"].each do |file|
27
+ cp(file,"figures")
28
+ end
29
+ Dir["#{lang}/figures-dia/*.dia"].each do |file|
30
+ png_dest= file.sub(/.*fig0(\d)0?(\d+).dia/, 'figures/\1.\2.png')
31
+ system("dia -e #{png_dest} #{file}")
32
+ end
33
+ block.call
34
+ ensure
35
+ Dir["figures/18333*.png"].each do |file|
36
+ rm(file.gsub(/18333fig0(\d)0?(\d+)\-tn/, '\1.\2'))
37
+ end
38
+ end
39
+ end
40
+
41
+
42
+ if ARGV.length == 0
43
+ puts "you need to specify at least one language. For example: makeebooks en"
44
+ exit
45
+ end
46
+
47
+ format = ENV['FORMAT'] || 'mobi'
48
+ puts "using .#{format} (you can change it via FORMAT environment variable. try 'mobi' or 'epub')"
49
+
50
+ ARGV.each do |lang|
51
+ figures (lang) do
52
+ puts "convert content for '#{lang}' language"
53
+
54
+ figure_title = 'Figure'
55
+ book_title = 'Pro Git - professional version control'
56
+ authors = 'Scott Chacon'
57
+ comments = 'licensed under the Creative Commons Attribution-Non Commercial-Share Alike 3.0 license'
58
+ if lang == 'ko'
59
+ figure_title = '그림'
60
+ elsif lang == 'ja'
61
+ figure_title = '図'
62
+ elsif lang == 'ru'
63
+ figure_title = 'Рисунок'
64
+ book_title = 'Pro Git — профессиональный контроль версий'
65
+ authors = 'Скот Чакон'
66
+ comments = 'Лицензия: Creative Commons Attribution-Non Commercial-Share Alike 3.0 license'
67
+ elsif lang == 'es'
68
+ figure_title = 'Figura'
69
+ elsif lang == 'it'
70
+ figure_title = 'Figura'
71
+ comments = 'distribuito sotto licenza Creative Commons Attribution-Non Commercial-Share Alike 3.0'
72
+ elsif lang == 'zh'
73
+ figure_title = '图'
74
+ elsif lang == 'zh-tw'
75
+ figure_title = '圖'
76
+ elsif lang == 'pt-br'
77
+ figure_title = 'Figura'
78
+ elsif lang == 'pl'
79
+ figure_title = 'Rysunek'
80
+ book_title = 'Pro Git — profesjonalna kontrola wersji'
81
+ comments = 'udostępnione na licencji Creative Commons Attribution-Non Commercial-Share Alike 3.0 license'
82
+ elsif lang == 'cs'
83
+ figure_title = 'Obrázek'
84
+ book_title = 'Pro Git — profesionální správa verzí'
85
+ comments = 'Licence: Creative Commons Attribution-Non Commercial-Share Alike 3.0 license'
86
+ elsif lang == "no-nb"
87
+ figure_title = 'Figur'
88
+ book_title = 'Pro Git - profesjonell versjonkontroll'
89
+ comments = 'Lisens: Creative Commons Attribution-Non Commercial-Share Alike 3.0 license'
90
+
91
+ end
92
+
93
+ book_content = %(<html xmlns="http://www.w3.org/1999/xhtml"><head><title>#{book_title}</title></head><body>)
94
+ dir = File.expand_path(File.join(File.dirname(__FILE__), lang))
95
+ Dir[File.join(dir, '**', '*.markdown')].sort.each do |input|
96
+ puts "processing #{input}"
97
+ content = File.read(input)
98
+ content.gsub!(/Insert\s18333fig\d+\.png\s*\n.*?(\d{1,2})-(\d{1,2})\. (.*)/, '![\1.\2 \3](figures/\1.\2.png "\1.\2 \3")')
99
+ book_content << RDiscount.new(content).to_html
100
+ end
101
+ book_content << "</body></html>"
102
+
103
+ File.open("progit.#{lang}.html", 'w') do |output|
104
+ output.write(book_content)
105
+ end
106
+
107
+ $ebook_convert_cmd = ENV['ebook_convert_path'].to_s
108
+ if $ebook_convert_cmd.empty?
109
+ $ebook_convert_cmd = `which ebook-convert`.chomp
110
+ end
111
+ if $ebook_convert_cmd.empty?
112
+ mac_osx_path = '/Applications/calibre.app/Contents/MacOS/ebook-convert'
113
+ $ebook_convert_cmd = mac_osx_path
114
+ end
115
+
116
+ system($ebook_convert_cmd, "progit.#{lang}.html", "progit.#{lang}.#{format}",
117
+ '--cover', 'ebooks/cover.png',
118
+ '--authors', authors,
119
+ '--comments', comments,
120
+ '--level1-toc', '//h:h1',
121
+ '--level2-toc', '//h:h2',
122
+ '--level3-toc', '//h:h3',
123
+ '--language', lang)
124
+ end
125
+ end
@@ -0,0 +1,47 @@
1
+ #!/bin/bash
2
+
3
+ baseDir=`dirname $0`
4
+ outputDir=${baseDir}/pdf
5
+
6
+ exclude=('figures' 'figures-dia' 'figures-source' 'latex' 'makepdfs' 'pdf' 'README')
7
+ dirContent=`ls $baseDir`
8
+ argString=""
9
+
10
+ echo $i;
11
+
12
+ for dir in $dirContent; do
13
+ if [ -n $dir ]; then
14
+
15
+ isLang=1
16
+ for i in ${exclude[@]}; do
17
+ if [ $i == $dir ]; then
18
+ isLang=0
19
+ fi
20
+ done
21
+
22
+ if [ $isLang -eq 1 ]; then
23
+ if [ "$1" = "" ]; then
24
+ argString="${argString} ${dir}"
25
+ else
26
+ for i in ${@}; do
27
+ if [ $i = $dir ]; then
28
+ argString="${argString} ${dir}"
29
+ fi
30
+ done
31
+ fi
32
+ fi
33
+ fi
34
+ done
35
+
36
+ echo "Will generate pdf for the following languages:"
37
+ echo " "$argString
38
+
39
+ mkdir -p $outputDir
40
+
41
+ echo
42
+ echo "The generation process will start now."
43
+ time ${baseDir}/latex/makepdf $argString
44
+
45
+ echo
46
+ echo
47
+ echo "Done!"
@@ -0,0 +1,258 @@
1
+ # Како да започнам #
2
+
3
+ Ова поглавје се однесува на тоа како да започнете со Git. На почетокот ќе започнеме со објаснување на позадината на алатките за контрола на верзии, понатаму ќе продолжиме со тоа како да го покренете Git на вашиот систем и конечно како да го подесите и да работите со него. На крајот од ова поглавје ќе разберете зошто е направен Git, зошто треба да го користите и што се треба да направите за да го користите.
4
+
5
+ ## За контрола на верзиите ##
6
+
7
+ Што е контрола на верзии, и зошто би требало да се грижите? Контрола на верзии е систем кој што ги бележи промените во една датотека или во група од датотеки со текот на времето така што подоцна би можеле да се вратите на одредена верзија. За примерите во оваа книга ќе користите изворен код од софтвер како датотеки кои што ќе бидат верзионирани, инаку истото можете да го правите со било каков тип на датотеки.
8
+
9
+ Ако си графички дизајнер и сакаш да ја сочуваш секоја верзија од сликата или нацртот (секако дека би сакал), тогаш користење на Систем за Контрола на Верзии (VCS од англиски Version Control System) е разумен начин да се постигне тоа. Тој ви овозможува одредени датотеки да ги вратите во претходна состојба, целиот проект да го вратите во претходна состојба, да ги споредите измените кои што се направени во одреден временски период, да видите кој последен менувал и дали тоа предизвикало некој проблем, кој и кога вовел неправилност итн. Користење на VCS генерално значи дури и да уништите или изгубите датотеки, секогаш може лесно да ги вратите назад. Дополнително, сето тоа го добивате за сосема мал напор.
10
+
11
+ ### Локални системи за контрола на верзии ###
12
+
13
+ Многу луѓе како систем за верзионирање го користат методот на копирање на датотеките во друга папка (можеби папка со датум во името). Овој пристап е многу вообичаен затоа што е едноставен, но неверојатно многу е склон на грешки. Многу е лесно да заборавите во која папка се наоѓате моментално, и по грешка да запишете или да пребришете датотека.
14
+
15
+ За да се справат со овој проблем, програмерите одамна развиле локални VCS-и кои што имале едноставна база во која што се бележеле сите промени во датотеките кои што биле ставен под системот за контрола на верзиите (види Сл 1-1).
16
+
17
+ Insert 18333fig0101.png
18
+ Слика 1-1. Дијаграм на локален систем за контрола на верзиите.
19
+
20
+ Еден од попопуларните VCS алатки бил системот наречен rcs, кој што и денеска сеуште се користи. Дури и популарниот Mac OS X оперативен систем ја вклучува наредбата rcs кога ќе инсталирате развојни алатки. Оваа алатка работи на тој начин што чува серија од закрпи (разлики помеѓу датотеките) од една до друга промена во специјален формат на дискот; понатаму на тој начин може да ја добие секоја состојба што ја имала датотеката во одредено време со додавање на закрпите.
21
+
22
+ ### Централизирани системи за контрола на верзиите ###
23
+
24
+ Следен голем проблем со кој што се судриле луѓето е неможноста да колаборираат со програмерите на други системи. За да се разреши овој проблем биле развиени Централизи-рани Системи за Контрола на Верзиите (CVCSs - Centralized Version Control Systems). Овие системи, како што се CVS, Subversion, и Perforce, имаат централен сервер кој што ги содржи сите верзионирани датотеки, и голем број на клиенти кои што ги менуваат или прегледуваат датотеките од тоа централно место. Многу години тоа беше стандард за контрола на верзиите (види Слика 1-2).
25
+
26
+ Insert 18333fig0102.png
27
+ Слика 1-2. Дијаграм на централизиран систем за контрола на верзиите.
28
+
29
+ Ваквата поставка нуди многу предности, особено во однос на локалните VCS-и. На пример, секој во одредена мерка знае што работат другите на проектот. Администраторите фино може да подесат кој што може да работи, и далеку е поедноставно да се администрира CVCS отколку да се администрираат базите на секој клиент.
30
+
31
+ Но, ваквата поставка исто така има и сериозни недостатоци. Најочигледен е тоа што постои една точка која доколку откаже целиот систем ќе престане да функционира, а таа точка е централниот сервер. Ако тој сервер биде исклучен еден час на пример, во тој час никој воопшто нема да може да колаборира, ниту пак да ги зачува верзионираните промени на она на што работи. Доколку хард-дискот се корумпира, и доколку не постои соодветен бекап, тогаш апсолутно се е загубено - целосниот историјат на проектот, освен копиите кои што луѓето случајно би ги имале на локалните компјутери. Локалните VCS системи се подложни на истите проблеми - доколку целосната историја на проектот е на едно место, тогаш ризикувате да загубите се.
32
+
33
+ ### Дистрибуирани системи за контрола на верзиите ###
34
+
35
+ Тука стапуваат на сцена Дистрибуираните Системи за Контрола на Верзиите (DVCSs - Distributed Version Control Systems). Кај DVCS (како што е Git, Mercurial, Bazaar или Darcs), клиентите не ја прегледуваат само последната состојба од датотеките туку прават целосна копија од репозиторито. Така, доколку некој од серверите биде уништен, било која копија од клиентите може да биде земена за да се реставрира серверот. Секое прегледување е целосен бекап на сите податоци (види Слика 1-3).
36
+
37
+ Insert 18333fig0103.png
38
+ Слика 1-3. Дијаграм на дистрибуирани системи за контрола на верзиите.
39
+
40
+ Дополнително, многу од овие системи одлично се снаоѓаат при работа со повеќе оддале-чени репозиторија, така што можете да колаборирате со различни групи луѓе на различни начини истовремено во рамките на ист проект. Тоа ви овозможува да поставите повеке типови на начини на работа кои што не се возможни во централизираните системи, како што се хиерархискиот модели.
41
+
42
+ ## Кратка историја на Git ##
43
+
44
+ Како и со многу големи работи во животот, Git настана со мала креативна деструкција и жестока расправија. Линукс кернелот е проект со отворен код и сосема широк делокруг. Одржувањето за поголемиот дел од животниот век на Линукс кернелот (1991-2002) се одвивалот на тој начин што измените во софтверот се предавале како закрпи и архиви. Во 2002 Линукс кернел проектот почнал да користи лиценциран DVCS систем наречен BitKeeper.
45
+
46
+ Во 2005, врската помеѓу заедницата која што го развиваше Линукс кернелот и компанијата која што го разви BitKeeper се распадна, и алатката повеќе не можеше да се користи бесплатно. Тоа и наложи на Линукс развојната заедница (а посебно на Линус Торвалдс, авторот на Линукс) да развијат сопствена алатка базирана на некои лекции кои што ги научија додека го користеа BitKeeper. Некои од целите на новиот систем беа:
47
+
48
+ * Брзина
49
+ * Едноставен дизајн
50
+ * Силна подршка за не-линеарен начин на развој (илјадници паралелни гранки на развој)
51
+ * Целосно дистрибуиран
52
+ * Ефикасно да може да подржи големи проекти како Линукс кернелот (брзина и количина на податоци)
53
+
54
+ Од неговото раѓање во 2005, Git еволуираше во систем кој што е лесен за користење и сеуште ги задржува иницијалните цели. Тој е извонредно брз, многу ефикасен со големи проекти, и има извонреден систем за гранање за не-линеарен начин на развој (Види поглавје 3).
55
+
56
+ ## Основи на Git ##
57
+
58
+ Во неколку збора, што е Git? Оваа секција е многу битно да ја разберете, бидејќи ако разберете што е Git и основите како работи, тогаш ефикасното користење на Git веројатно ќе биде многу едноставно за вас. Додека учите за Git, пробајте да ги изолирате работите што евентуално ги знаете за другите VCS, како што е Subversion и Perforce; на тој начин ќе ја избегнете забуната при користењето на алатката. Git ги складира и обработува информациите многу поразлично од другите системи, иако корисничкиот интерфејс е прилично сличен; доколку ги разберете тие разлики ќе ги избегнете забуните при неговото користење.
59
+
60
+ ### Целосни слики, наместо закрпи ###
61
+
62
+ Најголемата разлика помеѓу Git и било кој друг VCS (Subversion и сл.) е во начинот на кој Git ги обработува податоците. Концептуално, повеќето други системи информациите ги складираат како листа од промени над поединечните датотеки. Тие системи (CVS, Subversion, Perforce, Bazaar итн) информациите ги чуваат како множества од датотеки и промените настанати над тие датотеки со текот на времето, како што е прикажано на Слика 1-4.
63
+
64
+ Insert 18333fig0104.png
65
+ Слика 1-4. Другите системи чуваат закрпи за секоја датотека.
66
+
67
+ Git не ги третира или чува податоците на тој начин. Наместо тоа, Git податоците ги третира како множества од целосни слики/копии од мини фајлсистем. Секогаш кога сакате да ја зачувате состојбата во која се наоѓа проектот во Git, тој едноставно прави слика од тоа како изгледаат сите датотеки во тој момент и зачувува референца до таа слика. За да биде ефикасен, доколку датотеките не се променети, Git не прави копија од датотеките туку само прави линк до претходно зачуваната идентична датотека. Git ги третира податоците како што е прикажано на сликата 1-5.
68
+
69
+ Insert 18333fig0105.png
70
+ Слика 1-5. Git ги зачувува податоците како целосни копии од проектот.
71
+
72
+ Ова е битна разлика помеѓу Git и речиси сите други VCS. Со тоа Git ги преиспитува речиси сите аспекти од системите за контрола на верзиите, за разлика од другите системи кои што едноставно ги копирале од претходните генерации. Тоа го прави Git да личи помалку на мини фајлсистем со извонредно моќни алатки над него, отколку како едноставен VCS. Ќе ги истражиме придобивките од таквото третирање на податоците при обработка на гранањето во Git во Поглавје 3.
73
+
74
+ ### Речиси секоја операција е локална ###
75
+
76
+ За повеќето операции што ги изведува Git му се потребни само локални датотеки и ресурси - генерално никакви информации од друг компјутер на мрежата не се потребни. Ако сте навикнати на користење на CVCS каде што повеќето операции имаат мрежна латенција, овој аспект на Git ќе ве натера да си помислите дека боговите на брзината го надариле Git со неискажлива моќ. Бидејќи целосниот историјат од проектот го имате локално на вашиот хард диск, повеќето операции изгледаат речиси моментални.
77
+
78
+ На пример, за да ја прегледате историјата на проектот, Git не треба да оди до серверот за да ја земе историјата и да ви ја прикаже - туку едноставно ја чита директно од вашата локална база на податоци. Тоа значи дека историјатот на проектот го гледате речиси моментално. Доколку сакате да ги видите разликите помеѓу сегашната верзија на некоја датотека и верзијата од пред еден месец, Git може да ја види состојбата на датотеката од пред еден месец и локално да ви ги пресмета разликите, наместо да испрати барање за тоа до оддалечен сервер, или пак да побара постара верзија за датотеката од некој сервер за да ја пресмета разликата локално.
79
+
80
+ Тоа значи дека нема многу работи кои што нема да може да ги направите доколку сте офјалн или не сте на VPN. Доколку се качите на авион или воз, и сакате малку да поработите, можете да правите нови состојби од проектот (commit) се додека не добиете мрежна врска и тогаш ќе ги аплоадирате. Ако сте дома и не може да го натерате вашиот VPN клиент да проработи, сепак можете да си работите на проектот. Кај многу други системи, ваквиот начин на работа или е невозможен или многу тешко изводлив. Со Perforce, на пример, речиси ништо не можете да правите доколку немате конекција со серверот; кај Subversion и CVS, може да ги едитирате датотеките, меѓутоа не може да направите нова состојба од проектот (commit) бидејќи базата на податоци е на сервер. Можеби сето ова не изгледа како некоја голема работа, меѓутоа може да се изненадите колкава разлика може да ви направи.
81
+
82
+ ### Git има интегритет ###
83
+
84
+ Пред да се зачуваат работите во Git, им се пресметува контролна сума, а подоцна истите работи се референцираат преку таа сума. Тоа значи дека е невозможно да се промени содржината на некоја датотека без Git да дознае за тоа. Тоа функционалност е вградена во Git во најниските нивоа и е интегрален дел од неговата филозофија. Не може да изгубите информација при пренос или да имате корумпирана датотека без Git да го детектира тоа.
85
+
86
+ Механизмот кој што го користи Git за пресметување на контролната сума се вика SHA-1 хеш. Тоа е стринг од 40 знаци составен од хексадекадни знаци (0-9 и a-f) и се пресметува врз основа на содржината на датотеката или папката во Git. SHA-1 хешот изгледа отприлика вака:
87
+
88
+ 24b9da6552252987aa493b52f8696cd6d3b00373
89
+
90
+ Насекаде ќе ги гледате ваквите хеш вредности во Git затоа што тој насекаде ги користи. Всушност, Git сите работи ги зачувува не според името на датотеката, туку во база на податоци која е адресабилна според хеш вредноста на нивната содржина.
91
+
92
+ ### Во основа Git само додава податоци ###
93
+
94
+ Кога изведувате операции во Git, речиси сите тие само додаваат податоци во Git базата на податоци. Речиси е невозможно да го натерате системот да направи нешто што подоцна не може да се врати на претходната состојба, или пак да го натерате да избрише некои податоци. Како и со секој VCS, може да ги загубите податоците кои што не сте ги комитувале; но откако ќе ги комитувате и кога Git ќе направи слика од тоа, тогаш навистина е тешко да загубите нешто, особено доколку редовно вашата база ја синхронизирате (push) со друго репозитори.
95
+
96
+ Тоа го прави користењето на Git вистинско задоволство бидејќи знаеме дека може да експериментираме без притоа да се плашиме дека може да ги уништиме работите. Поде-тално за тоа како Git ги складира податоците и како може да ги реставрирате податоците кои изгледаат дека се загубени погледнете во "Под хаубата" во поглавје 9.
97
+
98
+ ### Трите нивоа ###
99
+
100
+ Сега внимавајте. Ова е главната работа што треба да се запомни за Git доколку сакате понатамошниот процес на учење да ви оди лесно. Git има три нивоа во кои што може да се најдат датотеките: комитувани (committed), променети (modified) и поставени (staged). Комитувани значи дека податоците безбедно се зачувани во локалната база на податоци. Променети значи дека датотеките се променети, меѓутоа сеуште не се комитувани. Поста-вени (staged) значи дека сте ги маркирале променетите датотеки во нивната тековна состојба да бидат зачувани во следниот комит.
101
+
102
+ Тоа не води до главните три секции од еден Git проект: Git папката, работна папка, и сцена (staging area).
103
+
104
+ Insert 18333fig0106.png
105
+ Слика 1-6. Работна папка, сцена, и git папката.
106
+
107
+ Git папката е местото каде што Git ги складира мета-податоците и базата на податоци за вашиот проект. Тоа е најзначајниот дел од Git, и тоа е она што се копира кога клонирате репозитори од друг компјутер.
108
+
109
+ Работната папка е поглед (checkout) на една верзија/состојба од проектот. Датотеките се извлечени од компресираната база на податоци од Git папката и се поставени на хард дискот за да ги користите или менувате.
110
+
111
+ Сцена (staging area) е едноставна датотека, обично е сместена во Git папката, и во неа се наоѓаат информации за тоа што ќе оди во следниот комит. Понекогаш за ова се користи терминот индекс (index), но се поприфатен термин е да се нарекува сцена (staging area).
112
+
113
+ Вообичаениот начин на работа со Git отприлика изгледа вака:
114
+
115
+ 1. Ги менувате датотеките од вашата локална папка.
116
+ 2. Ги поставувате датотеките на сцена, т.е. се прават слики од нив и се додаваат на сцената (staging area).
117
+ 3. Правите комит, кој што ги зема датотеките како што се поставени на сцената и таа слика перманентно ја зачувува во локалната Git папка.
118
+
119
+ Ако одредена верзија од датотеката се наоѓа во git папката, тогаш таа се смета за комитува-на. Доколку датотеката е променета и ако е додадена на сцена (staging area) тогаш таа се наоѓа во нова состојба - staged. Доколку пак датотеката е променета во однос на тоа кога е направен нов поглед во Git (checkout), и доколку променетата состојба не е додадена на сцена, тогаш датотеката едноставно се наоѓа во состојба која се нарекува променета. Во поглавје 2, ќе научите повеќе за тие состојби и како истите да ги искористите, или пак комплетно да го прескокнете чекорот од додавање на датотеката на сцена.
120
+
121
+ ## Инсталација на Git ##
122
+
123
+ Да почнеме со користење на Git. Како прво треба да го инсталирате. Може да дојдете до него на повеќе начини, двата најчести начини се да го инсталирате од изворен код или да го инсталирате како постоечки пакет за вашата платформа.
124
+
125
+ ### Инсталација од изворен код ###
126
+
127
+ Доколку сте во можност, генерално е покорисно да го инсталирате Git од изворен код, бидејќи на тој начин ја добивате најновата верзија. Секоја верзија од Git се труди да вклучи корисни подобрувања во корисничкиот интерфејс, па земајќи ја најновата верзија на Git од изворниот код вообичаено е најдобро доколку се чувствувате спремни да компајлирате софтвер од изворен код. Исто така чест случај е многу Линукс дистрибуции да содржат многу стари пакети; па освен ако ја немате најажурираната дистрибуција, инсталацијата на Git од изворен код е најсигурниот потег.
128
+
129
+ За да го инсталирате Git, треба да ги имате овие библиотеки од кои што зависи Git: curl, zlib, openssl, expat, и libiconv. На пример доколку користите систем кој што има yum (како што е Fedora) или пак apt-get (како што се Debian базираните дистрибуции), може да повикате една од овие наредби за да ги инсталирате сите овие зависности:
130
+
131
+ $ yum install curl-devel expat-devel gettext-devel \
132
+ openssl-devel zlib-devel
133
+
134
+ $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
135
+ libz-dev
136
+
137
+ Кога ќе ги имате сите овие зависности разрешено, може да ја симнете најновата верзија од Git сајтот:
138
+
139
+ http://git-scm.com/download
140
+
141
+ Потоа, компајлирајте го и инсталирајте го:
142
+
143
+ $ tar -zxf git-1.6.0.5.tar.gz
144
+ $ cd git-1.6.0.5
145
+ $ make prefix=/usr/local all
146
+ $ sudo make prefix=/usr/local install
147
+
148
+ Откако ќе го направите сетоа тоа, исто така ќе можете најновите измени во Git да ги земате преку самиот Git:
149
+
150
+ $ git clone git://git.kernel.org/pub/scm/git/git.git
151
+
152
+ ### Инсталирање на Линукс ###
153
+
154
+ Доколку сакате да го инсталирате Git на Линукс преку бинарен инсталатер, тоа може да го направите преку алатките за менеџирање на пакети кои што доаѓаат со вашата дистрибуција. Доколку користите Fedora, може да користите yum:
155
+
156
+ $ yum install git-core
157
+
158
+ Или пак доколку користите Debian-базирани дистрибуции како Ubuntu, пробајте со apt-get:
159
+
160
+ $ apt-get install git
161
+
162
+ ### Инсталирање на Мекинтош ###
163
+
164
+ Постојат два лесни начини како да го инсталирате Git на Мекинтош. Најлесниот е да го користите графичкиот Git инсталатор, кој што може да го симнете до SourceForge страната (види слика 1-7):
165
+
166
+ http://sourceforge.net/projects/git-osx-installer/
167
+
168
+ Insert 18333fig0107.png
169
+ Слика 1-7. Git OS X инсталатор.
170
+
171
+ Другиот начин е да го инсталирате Git преку MacPorts (`http://www.macports.org`).
172
+ Доколку веќе го имате инсталирано MacPorts, тогаш инсталирајте го Git преку
173
+
174
+ $ sudo port install git-core +svn +doc +bash_completion +gitweb
175
+
176
+ Не мора да ги имате сите додатоци, но најверојатно би сакале да го вклучите +svn во случај да сакате да го користите Git со Subversion репозиторија (види поглавје 8).
177
+
178
+ ### Инсталирање на Windows ###
179
+
180
+ Инсталирањето на Git на Windows е многу едноставно. msysGit проектот има еден од најлесните инсталациски процедури. Едноставно симнете го инсталерот од GitHub страната, и стартувајте го:
181
+
182
+ http://msysgit.github.com/
183
+
184
+ По инсталацијата, ги имате и верзијата од командна линија (вклучувајќи SSH клиент кој што ќе ви се најде подоцна) и верзија со стандарден графички интерфејс.
185
+
186
+ ## Прво поставување на Git ##
187
+
188
+ Сега кога го имате Git на вашиот систем, ќе сакате да направите неколку работи за да ја подесите вашата Git околина. Овие работи треба да ги направите само еднаш, и тие ќе си останат такви и после надградбите. Исто така може да ги промените во било кое време извршувајќи соодветни наредби.
189
+
190
+ Git доаѓа со алатка наречена git config која што ви овозможува да прегледате и да ги поставите конфигурациските променливи кои што ги контролираат сите аспекти за тоа како изгледа и како се однесува Git. Тие променливи може да бидат поставени на три различни места:
191
+
192
+ * `/etc/gitconfig` датотека: Содржи параметри за сите корисници на системот и сите нивни репозиторија. Ако го додадете аргументот` --system` на `git config`, тогаш тој чита и запишува од оваа датотека.
193
+ * `~/.gitconfig` датотека: Специфична за секој корисник. Git чита и запишува во оваа датотека со додавање на аргументот `--global`.
194
+ * конфигурациска датотека во git папката (т.е., `.git/config`) од репозиторито кое момен-тално го користите: Се однесува единствено на тоа репозитори. Секое ниво ги засенува вредностите од претходното ниво, па така, вредностите во `.git/config` ги засенуваат вредностите во `/etc/gitconfig`.
195
+
196
+ На Windows системите, Git ја бара `.gitconfig` датотеката во `$HOME` папката (најчесто `C:\Documents and Settings\$USER`). Исто така ја бара и /etc/gitconfig, иако таа патека е релативна во однос на MSys коренот, кој се наоѓа онаму каде што сте одлучиле да го инсталирате Git на Windows.
197
+
198
+ ### Вашиот идентитет ###
199
+
200
+ Прва работа што треба да ја направите по инсталирањето на Git е да го подесите вашето име и e-mail адреса. Ова е важно затоа што секој Git комит ги користи тие информации, и истите се вградени во секој комит што ќе го направите:
201
+
202
+ $ git config --global user.name "John Doe"
203
+ $ git config --global user.email johndoe@example.com
204
+
205
+ Ова треба да го направите само еднаш доколку како аргумент во наредбата ја користите `--global` опцијата, бидејќи во тој случај Git секогаш ќе ги користи тие информации за сите активности што ги изведувате на тој систем. Доколку за одреден проект сакате да користите поинакво име и e-mail адреса, тогаш повикајте ги наредбите без `--global` опцијата кога се наоѓате во тој проект.
206
+
207
+ ### Вашиот едитор ###
208
+
209
+ Сега кога вашиот идентитет е подесен, може да подесите и кој стандарден текстуален едитор ќе биде користен од Git кога ќе треба да внесете некоја порака. Стандардно, Git како едитор ќе го користи системскиот стандарден едитор, кој што вообичаено е Vi или Vim. Доколку сакате да користите друг текстуален едитор како што е Emacs, тоа може да го направите на следниов начин:
210
+
211
+ $ git config --global core.editor emacs
212
+
213
+ ### Вашата Diff алатка ###
214
+
215
+ Друга корисна опција која што можеби би сакале да ја подесите е која diff алатка да се користи за разрешување на конфликти при спојување (merge) на гранки. Доколку за таа намена сакате да го користите vimdiff:
216
+
217
+ $ git config --global merge.tool vimdiff
218
+
219
+ Git ги прифаќа kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge и opendiff како валидни алатки за разрешување конфликти. Исто така за таа намена може да подесите и произволна алатка - за повеќе информации како се прави тоа видете во поглавје 7.
220
+
221
+ ### Прегледување на вашите подесувања ###
222
+
223
+ Доколку сакате да ги проверите вашите подесувања, може да ја користите наредбата `git config --list` за да ги излистате сите подесувања кои ги користи Git во тој момент:
224
+
225
+ $ git config --list
226
+ user.name=Scott Chacon
227
+ user.email=schacon@gmail.com
228
+ color.status=auto
229
+ color.branch=auto
230
+ color.interactive=auto
231
+ color.diff=auto
232
+ ...
233
+
234
+ Можеби ќе видите ист клуч повеќе пати, бидејќи Git го чита истиот клуч од различни датотеки (`/etc/gitconfig` и `~/.gitconfig`, на пример). Во тој случај, Git ја користи последната вредност за секој пронајден клуч.
235
+
236
+ Може да проверите која вредност ја користи Git за некој клуч со испишување на `git config {key}`:
237
+
238
+ $ git config user.name
239
+ Scott Chacon
240
+
241
+ ## Добивање помош ##
242
+
243
+ Доколку ви затреба помош околу користењето на Git, постојат три начини да ги добиете страниците со кориснички упатства (manpage) за било која Git наредба:
244
+
245
+ $ git help <verb>
246
+ $ git <verb> --help
247
+ $ man git-<verb>
248
+
249
+ На пример, корисничкото упатство за config наредбата го добивате со извршување на наредбата
250
+
251
+ $ git help config
252
+
253
+ Овие наредби се корисни бидејќи може да ги извршите билокаде, дури и офлајн.
254
+ Доколку страниците со кориснички упатства и оваа книга не ви се доволни, и ви треба лице за контакт, може да се обидете на `#git` или `#github` каналите на Freenode IRC серверот (irc.freenode.net). Овие канали вообичаено се посетени од стотици луѓе кои се одлични познавачи на Git и честопати се спремни да ви помогнат.
255
+
256
+ ## Преглед ##
257
+
258
+ Би требало да добиете основно разбирање за тоа што е Git и колку е различен од CVCS кој можеби сте го користеле. Исто така сега би требало да имате работна верзија од Git на вашиот систем каде што е подесен вашиот идентитет. Сега е време да научите за некои основни работи во Git.