git-lighttp 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +21 -0
  3. data/README.md +90 -0
  4. data/README.pt-BR.md +96 -0
  5. data/doc/releases/{v0.1.0.rdoc → v0.1.0.md} +4 -4
  6. data/doc/releases/{v0.2.0.rdoc → v0.2.0.md} +3 -5
  7. data/doc/releases/{v0.3.0.rdoc → v0.3.0.md} +3 -3
  8. data/doc/releases/v0.3.1.md +12 -0
  9. data/git-lighttp.gemspec +34 -21
  10. data/lib/git/lighttp.rb +100 -97
  11. data/lib/git/lighttp/extensions.rb +26 -30
  12. data/lib/git/lighttp/http_backend.rb +20 -20
  13. data/lib/git/lighttp/treeish.rb +2 -2
  14. data/lib/git/lighttp/version.rb +3 -3
  15. metadata +79 -71
  16. data/Gemfile +0 -11
  17. data/Makefile +0 -41
  18. data/README.pt-BR.rdoc +0 -81
  19. data/README.rdoc +0 -75
  20. data/Rakefile +0 -50
  21. data/test/all.rb +0 -12
  22. data/test/config_test.rb +0 -43
  23. data/test/fixtures/config.yml +0 -13
  24. data/test/fixtures/htgroup +0 -3
  25. data/test/fixtures/htpasswd +0 -4
  26. data/test/fixtures/mycode.git/HEAD +0 -1
  27. data/test/fixtures/mycode.git/config +0 -4
  28. data/test/fixtures/mycode.git/description +0 -1
  29. data/test/fixtures/mycode.git/hooks/applypatch-msg.sample +0 -15
  30. data/test/fixtures/mycode.git/hooks/commit-msg.sample +0 -24
  31. data/test/fixtures/mycode.git/hooks/post-commit.sample +0 -8
  32. data/test/fixtures/mycode.git/hooks/post-receive.sample +0 -15
  33. data/test/fixtures/mycode.git/hooks/post-update.sample +0 -8
  34. data/test/fixtures/mycode.git/hooks/pre-applypatch.sample +0 -14
  35. data/test/fixtures/mycode.git/hooks/pre-commit.sample +0 -46
  36. data/test/fixtures/mycode.git/hooks/pre-rebase.sample +0 -169
  37. data/test/fixtures/mycode.git/hooks/prepare-commit-msg.sample +0 -36
  38. data/test/fixtures/mycode.git/hooks/update.sample +0 -128
  39. data/test/fixtures/mycode.git/info/exclude +0 -6
  40. data/test/fixtures/mycode.git/info/refs +0 -3
  41. data/test/fixtures/mycode.git/objects/02/83eb96425444e17b97182e1ba9f216cc67c132 +0 -0
  42. data/test/fixtures/mycode.git/objects/03/9927042df267a1bc606fc4485b7a79b6a9e3cd +0 -1
  43. data/test/fixtures/mycode.git/objects/0d/eed0a56fa8f5f2a788d58b3ea235afd547b828 +0 -2
  44. data/test/fixtures/mycode.git/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 +0 -0
  45. data/test/fixtures/mycode.git/objects/5e/54a0767e0c380f3baab17938d68c7f464cf171 +0 -1
  46. data/test/fixtures/mycode.git/objects/63/9b96262e7e19ca2169575e797b234098b8a72e +0 -0
  47. data/test/fixtures/mycode.git/objects/71/6e9568eed27d5ee4378b3ecf6dd095a547bde9 +0 -1
  48. data/test/fixtures/mycode.git/objects/b6/f3f0fabeaaaaf2db22b8ef98f59115baec7ef9 +0 -0
  49. data/test/fixtures/mycode.git/objects/be/118435b9d908fd4a689cd8b0cc98059911a31a +0 -0
  50. data/test/fixtures/mycode.git/objects/db/aefcb5bde664671c73b99515c386dcbc7f22b6 +0 -0
  51. data/test/fixtures/mycode.git/objects/eb/669b878d2013ac70aa5dee75e6357ea81d16ea +0 -0
  52. data/test/fixtures/mycode.git/objects/ed/10cfcf72862e140c97fe899cba2a55f4cb4c20 +0 -0
  53. data/test/fixtures/mycode.git/objects/ed/1c3a255ab3fce056dc31cd82df9f61a4d9fa22 +0 -0
  54. data/test/fixtures/mycode.git/objects/info/alternates +0 -0
  55. data/test/fixtures/mycode.git/objects/info/http-alternates +0 -0
  56. data/test/fixtures/mycode.git/objects/info/packs +0 -2
  57. data/test/fixtures/mycode.git/objects/pack/pack-40a8636b62258fffd78ec1e8d254116e72d385a9.idx +0 -0
  58. data/test/fixtures/mycode.git/objects/pack/pack-40a8636b62258fffd78ec1e8d254116e72d385a9.pack +0 -0
  59. data/test/fixtures/mycode.git/packed-refs +0 -4
  60. data/test/fixtures/mycode.git/refs/heads/master +0 -1
  61. data/test/fixtures/mycode.git/refs/tags/v0.1.0 +0 -1
  62. data/test/helpers.rb +0 -53
  63. data/test/htgroup_test.rb +0 -29
  64. data/test/htpasswd_test.rb +0 -63
  65. data/test/http_backend_authentication_test.rb +0 -61
  66. data/test/http_backend_test.rb +0 -123
  67. data/test/project_handler_test.rb +0 -45
  68. data/test/treeish_test.rb +0 -33
@@ -1,169 +0,0 @@
1
- #!/bin/sh
2
- #
3
- # Copyright (c) 2006, 2008 Junio C Hamano
4
- #
5
- # The "pre-rebase" hook is run just before "git rebase" starts doing
6
- # its job, and can prevent the command from running by exiting with
7
- # non-zero status.
8
- #
9
- # The hook is called with the following parameters:
10
- #
11
- # $1 -- the upstream the series was forked from.
12
- # $2 -- the branch being rebased (or empty when rebasing the current branch).
13
- #
14
- # This sample shows how to prevent topic branches that are already
15
- # merged to 'next' branch from getting rebased, because allowing it
16
- # would result in rebasing already published history.
17
-
18
- publish=next
19
- basebranch="$1"
20
- if test "$#" = 2
21
- then
22
- topic="refs/heads/$2"
23
- else
24
- topic=`git symbolic-ref HEAD` ||
25
- exit 0 ;# we do not interrupt rebasing detached HEAD
26
- fi
27
-
28
- case "$topic" in
29
- refs/heads/??/*)
30
- ;;
31
- *)
32
- exit 0 ;# we do not interrupt others.
33
- ;;
34
- esac
35
-
36
- # Now we are dealing with a topic branch being rebased
37
- # on top of master. Is it OK to rebase it?
38
-
39
- # Does the topic really exist?
40
- git show-ref -q "$topic" || {
41
- echo >&2 "No such branch $topic"
42
- exit 1
43
- }
44
-
45
- # Is topic fully merged to master?
46
- not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
47
- if test -z "$not_in_master"
48
- then
49
- echo >&2 "$topic is fully merged to master; better remove it."
50
- exit 1 ;# we could allow it, but there is no point.
51
- fi
52
-
53
- # Is topic ever merged to next? If so you should not be rebasing it.
54
- only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
55
- only_next_2=`git rev-list ^master ${publish} | sort`
56
- if test "$only_next_1" = "$only_next_2"
57
- then
58
- not_in_topic=`git rev-list "^$topic" master`
59
- if test -z "$not_in_topic"
60
- then
61
- echo >&2 "$topic is already up-to-date with master"
62
- exit 1 ;# we could allow it, but there is no point.
63
- else
64
- exit 0
65
- fi
66
- else
67
- not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
68
- /usr/bin/perl -e '
69
- my $topic = $ARGV[0];
70
- my $msg = "* $topic has commits already merged to public branch:\n";
71
- my (%not_in_next) = map {
72
- /^([0-9a-f]+) /;
73
- ($1 => 1);
74
- } split(/\n/, $ARGV[1]);
75
- for my $elem (map {
76
- /^([0-9a-f]+) (.*)$/;
77
- [$1 => $2];
78
- } split(/\n/, $ARGV[2])) {
79
- if (!exists $not_in_next{$elem->[0]}) {
80
- if ($msg) {
81
- print STDERR $msg;
82
- undef $msg;
83
- }
84
- print STDERR " $elem->[1]\n";
85
- }
86
- }
87
- ' "$topic" "$not_in_next" "$not_in_master"
88
- exit 1
89
- fi
90
-
91
- exit 0
92
-
93
- ################################################################
94
-
95
- This sample hook safeguards topic branches that have been
96
- published from being rewound.
97
-
98
- The workflow assumed here is:
99
-
100
- * Once a topic branch forks from "master", "master" is never
101
- merged into it again (either directly or indirectly).
102
-
103
- * Once a topic branch is fully cooked and merged into "master",
104
- it is deleted. If you need to build on top of it to correct
105
- earlier mistakes, a new topic branch is created by forking at
106
- the tip of the "master". This is not strictly necessary, but
107
- it makes it easier to keep your history simple.
108
-
109
- * Whenever you need to test or publish your changes to topic
110
- branches, merge them into "next" branch.
111
-
112
- The script, being an example, hardcodes the publish branch name
113
- to be "next", but it is trivial to make it configurable via
114
- $GIT_DIR/config mechanism.
115
-
116
- With this workflow, you would want to know:
117
-
118
- (1) ... if a topic branch has ever been merged to "next". Young
119
- topic branches can have stupid mistakes you would rather
120
- clean up before publishing, and things that have not been
121
- merged into other branches can be easily rebased without
122
- affecting other people. But once it is published, you would
123
- not want to rewind it.
124
-
125
- (2) ... if a topic branch has been fully merged to "master".
126
- Then you can delete it. More importantly, you should not
127
- build on top of it -- other people may already want to
128
- change things related to the topic as patches against your
129
- "master", so if you need further changes, it is better to
130
- fork the topic (perhaps with the same name) afresh from the
131
- tip of "master".
132
-
133
- Let's look at this example:
134
-
135
- o---o---o---o---o---o---o---o---o---o "next"
136
- / / / /
137
- / a---a---b A / /
138
- / / / /
139
- / / c---c---c---c B /
140
- / / / \ /
141
- / / / b---b C \ /
142
- / / / / \ /
143
- ---o---o---o---o---o---o---o---o---o---o---o "master"
144
-
145
-
146
- A, B and C are topic branches.
147
-
148
- * A has one fix since it was merged up to "next".
149
-
150
- * B has finished. It has been fully merged up to "master" and "next",
151
- and is ready to be deleted.
152
-
153
- * C has not merged to "next" at all.
154
-
155
- We would want to allow C to be rebased, refuse A, and encourage
156
- B to be deleted.
157
-
158
- To compute (1):
159
-
160
- git rev-list ^master ^topic next
161
- git rev-list ^master next
162
-
163
- if these match, topic has not merged in next at all.
164
-
165
- To compute (2):
166
-
167
- git rev-list master..topic
168
-
169
- if this is empty, it is fully merged to "master".
@@ -1,36 +0,0 @@
1
- #!/bin/sh
2
- #
3
- # An example hook script to prepare the commit log message.
4
- # Called by "git commit" with the name of the file that has the
5
- # commit message, followed by the description of the commit
6
- # message's source. The hook's purpose is to edit the commit
7
- # message file. If the hook fails with a non-zero status,
8
- # the commit is aborted.
9
- #
10
- # To enable this hook, rename this file to "prepare-commit-msg".
11
-
12
- # This hook includes three examples. The first comments out the
13
- # "Conflicts:" part of a merge commit.
14
- #
15
- # The second includes the output of "git diff --name-status -r"
16
- # into the message, just before the "git status" output. It is
17
- # commented because it doesn't cope with --amend or with squashed
18
- # commits.
19
- #
20
- # The third example adds a Signed-off-by line to the message, that can
21
- # still be edited. This is rarely a good idea.
22
-
23
- case "$2,$3" in
24
- merge,)
25
- /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
26
-
27
- # ,|template,)
28
- # /usr/bin/perl -i.bak -pe '
29
- # print "\n" . `git diff --cached --name-status -r`
30
- # if /^#/ && $first++ == 0' "$1" ;;
31
-
32
- *) ;;
33
- esac
34
-
35
- # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
36
- # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
@@ -1,128 +0,0 @@
1
- #!/bin/sh
2
- #
3
- # An example hook script to blocks unannotated tags from entering.
4
- # Called by "git receive-pack" with arguments: refname sha1-old sha1-new
5
- #
6
- # To enable this hook, rename this file to "update".
7
- #
8
- # Config
9
- # ------
10
- # hooks.allowunannotated
11
- # This boolean sets whether unannotated tags will be allowed into the
12
- # repository. By default they won't be.
13
- # hooks.allowdeletetag
14
- # This boolean sets whether deleting tags will be allowed in the
15
- # repository. By default they won't be.
16
- # hooks.allowmodifytag
17
- # This boolean sets whether a tag may be modified after creation. By default
18
- # it won't be.
19
- # hooks.allowdeletebranch
20
- # This boolean sets whether deleting branches will be allowed in the
21
- # repository. By default they won't be.
22
- # hooks.denycreatebranch
23
- # This boolean sets whether remotely creating branches will be denied
24
- # in the repository. By default this is allowed.
25
- #
26
-
27
- # --- Command line
28
- refname="$1"
29
- oldrev="$2"
30
- newrev="$3"
31
-
32
- # --- Safety check
33
- if [ -z "$GIT_DIR" ]; then
34
- echo "Don't run this script from the command line." >&2
35
- echo " (if you want, you could supply GIT_DIR then run" >&2
36
- echo " $0 <ref> <oldrev> <newrev>)" >&2
37
- exit 1
38
- fi
39
-
40
- if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
41
- echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
42
- exit 1
43
- fi
44
-
45
- # --- Config
46
- allowunannotated=$(git config --bool hooks.allowunannotated)
47
- allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
48
- denycreatebranch=$(git config --bool hooks.denycreatebranch)
49
- allowdeletetag=$(git config --bool hooks.allowdeletetag)
50
- allowmodifytag=$(git config --bool hooks.allowmodifytag)
51
-
52
- # check for no description
53
- projectdesc=$(sed -e '1q' "$GIT_DIR/description")
54
- case "$projectdesc" in
55
- "Unnamed repository"* | "")
56
- echo "*** Project description file hasn't been set" >&2
57
- exit 1
58
- ;;
59
- esac
60
-
61
- # --- Check types
62
- # if $newrev is 0000...0000, it's a commit to delete a ref.
63
- zero="0000000000000000000000000000000000000000"
64
- if [ "$newrev" = "$zero" ]; then
65
- newrev_type=delete
66
- else
67
- newrev_type=$(git cat-file -t $newrev)
68
- fi
69
-
70
- case "$refname","$newrev_type" in
71
- refs/tags/*,commit)
72
- # un-annotated tag
73
- short_refname=${refname##refs/tags/}
74
- if [ "$allowunannotated" != "true" ]; then
75
- echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
76
- echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
77
- exit 1
78
- fi
79
- ;;
80
- refs/tags/*,delete)
81
- # delete tag
82
- if [ "$allowdeletetag" != "true" ]; then
83
- echo "*** Deleting a tag is not allowed in this repository" >&2
84
- exit 1
85
- fi
86
- ;;
87
- refs/tags/*,tag)
88
- # annotated tag
89
- if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
90
- then
91
- echo "*** Tag '$refname' already exists." >&2
92
- echo "*** Modifying a tag is not allowed in this repository." >&2
93
- exit 1
94
- fi
95
- ;;
96
- refs/heads/*,commit)
97
- # branch
98
- if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
99
- echo "*** Creating a branch is not allowed in this repository" >&2
100
- exit 1
101
- fi
102
- ;;
103
- refs/heads/*,delete)
104
- # delete branch
105
- if [ "$allowdeletebranch" != "true" ]; then
106
- echo "*** Deleting a branch is not allowed in this repository" >&2
107
- exit 1
108
- fi
109
- ;;
110
- refs/remotes/*,commit)
111
- # tracking branch
112
- ;;
113
- refs/remotes/*,delete)
114
- # delete tracking branch
115
- if [ "$allowdeletebranch" != "true" ]; then
116
- echo "*** Deleting a tracking branch is not allowed in this repository" >&2
117
- exit 1
118
- fi
119
- ;;
120
- *)
121
- # Anything else (is there anything else?)
122
- echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
123
- exit 1
124
- ;;
125
- esac
126
-
127
- # --- Finished
128
- exit 0
@@ -1,6 +0,0 @@
1
- # git ls-files --others --exclude-from=.git/info/exclude
2
- # Lines that start with '#' are comments.
3
- # For a project mostly in C, the following would be a good set of
4
- # exclude patterns (uncomment them if you want to use them):
5
- # *.[oa]
6
- # *~
@@ -1,3 +0,0 @@
1
- 039927042df267a1bc606fc4485b7a79b6a9e3cd refs/heads/master
2
- dbaefcb5bde664671c73b99515c386dcbc7f22b6 refs/tags/v0.1.0
3
- 039927042df267a1bc606fc4485b7a79b6a9e3cd refs/tags/v0.1.0^{}
@@ -1 +0,0 @@
1
- x��MN�0 @a�9�/��i~K+����LP��:��T���O����%��y�BVk�w!��M<�DER�R(a ���es�C���F���,�U�֔��-� ~͢d�{������1:|���r��K���k�_�h�`!�B��ќz�N�wȼ��~����_Z&Ծ������X'
@@ -1,2 +0,0 @@
1
- x��M� F]s���
2
- �][npp֪֝�z���!5���$ʘ���jR�
@@ -1 +0,0 @@
1
- x��Aj�0@Ѭu��@�4�G�t�c$��-[��
@@ -1 +0,0 @@
1
- x��A� @Qלb.`3��0�1ƅ�@��$���6�7p���ZJ�8��1� N�K�F�`9�G�<���Œvn
@@ -1,2 +0,0 @@
1
- P pack-40a8636b62258fffd78ec1e8d254116e72d385a9.pack
2
-
@@ -1,4 +0,0 @@
1
- # pack-refs with: peeled
2
- 039927042df267a1bc606fc4485b7a79b6a9e3cd refs/heads/master
3
- dbaefcb5bde664671c73b99515c386dcbc7f22b6 refs/tags/v0.1.0
4
- ^039927042df267a1bc606fc4485b7a79b6a9e3cd
@@ -1 +0,0 @@
1
- 0deed0a56fa8f5f2a788d58b3ea235afd547b828
@@ -1 +0,0 @@
1
- dbaefcb5bde664671c73b99515c386dcbc7f22b6
@@ -1,53 +0,0 @@
1
- FIXTURES = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures')) unless defined? FIXTURES
2
-
3
- module Minitest
4
- class Test
5
- def fixtures(*args)
6
- File.join(FIXTURES, *(args.map(&:to_s)))
7
- end
8
-
9
- def debugger
10
- end unless defined? debugger
11
-
12
- end
13
-
14
- module Assertions
15
-
16
- def assert_hash_equal(expected, actual, message = nil)
17
- messages = {}
18
- expected.keys.each do |key|
19
- equal = actual[key] == expected[key]
20
- messages[key] = build_message(message, "#{expected[key]} expected but was <?>", actual[key])
21
- assert_block(messages[key]) { expected[key] == actual[key] }
22
- end
23
- end
24
- end
25
-
26
- end
27
-
28
- class MockProcess
29
-
30
- def initialize
31
- @counter = 0
32
- end
33
-
34
- def write(data)
35
- $stdout.puts data
36
- end
37
-
38
- def read(data)
39
- $sdtout.puts data
40
- end
41
-
42
- def eof?
43
- @counter += 1
44
- @counter > 10 ? true : false
45
- end
46
-
47
- end
48
-
49
- class IO
50
- def self.popen(*args)
51
- MockProcess.new
52
- end
53
- end