git-svn: add some functionality to better support branches in svn

New commands:

graft-branches - The most interesting command of the bunch.  It
detects branches in SVN via various techniques (currently
regexes and file copies).   It can be later extended to handle
svk and other properties people may use to track merges in svk.
Basically, merge tracking is not standardized at all in the SVN
world, and git grafts are perfect for dealing with this
situation.

Existing branch support (via tree matches) is only handled at
fetch time.

The following tow were originally implemented as shell scripts
several months ago, but I just decided to streamline things a
bit and added them to the main script.

multi-init - supports git-svnimport-like command-line syntax for
importing repositories that are layed out as recommended by the
SVN folks.  This is a bit more tolerant than the git-svnimport
command-line syntax and doesn't require the user to figure out
where the repository URL ends and where the repository path
begins.

multi-fetch - runs fetch on all known SVN branches we're
tracking.  This will NOT discover new branches (unlike
git-svnimport), so multi-init will need to be re-run (it's
idempotent).

Consider these three to be auxilliary commands (like
show-ignore, and rebuild) so their behavior won't receive as
much testing or scrutiny as the core commands (fetch and
commit).

Signed-off-by: Eric Wong <normalperson@yhbt.net>
1 file changed
tree: 770c84595eb01de5f61fa01cd507209c73751aeb
  1. arm/
  2. compat/
  3. contrib/
  4. Documentation/
  5. gitweb/
  6. mozilla-sha1/
  7. ppc/
  8. t/
  9. templates/
  10. xdiff/
  11. .gitignore
  12. base85.c
  13. blame.c
  14. blob.c
  15. blob.h
  16. builtin-add.c
  17. builtin-apply.c
  18. builtin-cat-file.c
  19. builtin-check-ref-format.c
  20. builtin-commit-tree.c
  21. builtin-count.c
  22. builtin-diff-files.c
  23. builtin-diff-index.c
  24. builtin-diff-stages.c
  25. builtin-diff-tree.c
  26. builtin-diff.c
  27. builtin-grep.c
  28. builtin-help.c
  29. builtin-init-db.c
  30. builtin-log.c
  31. builtin-ls-files.c
  32. builtin-ls-tree.c
  33. builtin-push.c
  34. builtin-read-tree.c
  35. builtin-rev-list.c
  36. builtin-rev-parse.c
  37. builtin-rm.c
  38. builtin-show-branch.c
  39. builtin-tar-tree.c
  40. builtin-upload-tar.c
  41. builtin.h
  42. cache-tree.c
  43. cache-tree.h
  44. cache.h
  45. checkout-index.c
  46. clone-pack.c
  47. combine-diff.c
  48. commit.c
  49. commit.h
  50. config.c
  51. connect.c
  52. convert-objects.c
  53. copy.c
  54. COPYING
  55. csum-file.c
  56. csum-file.h
  57. ctype.c
  58. daemon.c
  59. date.c
  60. delta.h
  61. describe.c
  62. diff-delta.c
  63. diff-lib.c
  64. diff.c
  65. diff.h
  66. diffcore-break.c
  67. diffcore-delta.c
  68. diffcore-order.c
  69. diffcore-pickaxe.c
  70. diffcore-rename.c
  71. diffcore.h
  72. dir.c
  73. dir.h
  74. dump-cache-tree.c
  75. entry.c
  76. environment.c
  77. exec_cmd.c
  78. exec_cmd.h
  79. fetch-clone.c
  80. fetch-pack.c
  81. fetch.c
  82. fetch.h
  83. fsck-objects.c
  84. generate-cmdlist.sh
  85. git-am.sh
  86. git-annotate.perl
  87. git-applymbox.sh
  88. git-applypatch.sh
  89. git-archimport.perl
  90. git-bisect.sh
  91. git-branch.sh
  92. git-checkout.sh
  93. git-cherry.sh
  94. git-clean.sh
  95. git-clone.sh
  96. git-commit.sh
  97. git-compat-util.h
  98. git-cvsexportcommit.perl
  99. git-cvsimport.perl
  100. git-cvsserver.perl
  101. git-fetch.sh
  102. git-fmt-merge-msg.perl
  103. git-lost-found.sh
  104. git-ls-remote.sh
  105. git-merge-octopus.sh
  106. git-merge-one-file.sh
  107. git-merge-ours.sh
  108. git-merge-recursive.py
  109. git-merge-resolve.sh
  110. git-merge-stupid.sh
  111. git-merge.sh
  112. git-mv.perl
  113. git-p4import.py
  114. git-parse-remote.sh
  115. git-prune.sh
  116. git-pull.sh
  117. git-push.sh
  118. git-quiltimport.sh
  119. git-rebase.sh
  120. git-relink.perl
  121. git-repack.sh
  122. git-request-pull.sh
  123. git-rerere.perl
  124. git-reset.sh
  125. git-resolve.sh
  126. git-revert.sh
  127. git-send-email.perl
  128. git-sh-setup.sh
  129. git-shortlog.perl
  130. git-svnimport.perl
  131. git-tag.sh
  132. git-verify-tag.sh
  133. GIT-VERSION-GEN
  134. git.c
  135. git.spec.in
  136. gitk
  137. gitMergeCommon.py
  138. hash-object.c
  139. http-fetch.c
  140. http-push.c
  141. http.c
  142. http.h
  143. ident.c
  144. imap-send.c
  145. index-pack.c
  146. INSTALL
  147. local-fetch.c
  148. lockfile.c
  149. log-tree.c
  150. log-tree.h
  151. mailinfo.c
  152. mailsplit.c
  153. Makefile
  154. merge-base.c
  155. merge-index.c
  156. merge-tree.c
  157. mktag.c
  158. mktree.c
  159. name-rev.c
  160. object.c
  161. object.h
  162. pack-check.c
  163. pack-objects.c
  164. pack-redundant.c
  165. pack.h
  166. pager.c
  167. patch-delta.c
  168. patch-id.c
  169. path.c
  170. peek-remote.c
  171. pkt-line.c
  172. pkt-line.h
  173. prune-packed.c
  174. quote.c
  175. quote.h
  176. read-cache.c
  177. README
  178. receive-pack.c
  179. refs.c
  180. refs.h
  181. repo-config.c
  182. revision.c
  183. revision.h
  184. rsh.c
  185. rsh.h
  186. run-command.c
  187. run-command.h
  188. send-pack.c
  189. server-info.c
  190. setup.c
  191. sha1_file.c
  192. sha1_name.c
  193. shell.c
  194. show-index.c
  195. ssh-fetch.c
  196. ssh-pull.c
  197. ssh-push.c
  198. ssh-upload.c
  199. strbuf.c
  200. strbuf.h
  201. stripspace.c
  202. symbolic-ref.c
  203. tag.c
  204. tag.h
  205. tar.h
  206. test-date.c
  207. test-delta.c
  208. tree-diff.c
  209. tree-walk.c
  210. tree-walk.h
  211. tree.c
  212. tree.h
  213. unpack-file.c
  214. unpack-objects.c
  215. update-index.c
  216. update-ref.c
  217. update-server-info.c
  218. upload-pack.c
  219. usage.c
  220. var.c
  221. verify-pack.c
  222. write-tree.c
  223. xdiff-interface.c
  224. xdiff-interface.h