The branch, PHP_POST_RECEIVE on karma.git has been updated
via 67c322fe22b0cb6f561711a4041325974b9bfc31 (commit)
from b841aacab5e1e9af103b1d38e11822debda5ea22 (commit)
http://git.php.net/?p=karma.git;a=log;h=67c322fe22b0cb6f561711a4041325974b9bfc31;hp=b841aacab5e1e9af103b1d38e11822debda5ea22
Summary of changes:
README.POST_RECEIVE | 84 +++++++++++++++++++++++++++++++++++++++++++
lib/Git/PostReceiveHook.php | 37 -------------------
2 files changed, 84 insertions(+), 37 deletions(-)
create mode 100644 README.POST_RECEIVE
-- Log ----------------------------------------
commit 67c322fe22b0cb6f561711a4041325974b9bfc31
Author: Alexander Moskaliov <[email protected]>
Date: Tue Mar 6 22:46:15 2012 +0400
Move git push situations description to README
diff --git a/README.POST_RECEIVE b/README.POST_RECEIVE
new file mode 100644
index 0000000..90a9f59
--- /dev/null
+++ b/README.POST_RECEIVE
@@ -0,0 +1,84 @@
+Post receive mail script solutions.
+
+
+digits - commits,
+chars - branches (except N & O)
+N, O - new and old revisions in push per branch.
+
+------------
+Branch mail:
+This part contains info only about mail per branch. For mail per commit logic
different.
+
+
+ New branch (0..N):
+
+ 1 - 2 - A (already on server)
+ \
+ 3 - B (pushed)
+
+ We get all commits reachable from new branche and not from all other
branches:
+ git rev-list B --not A -> 3-B
+
+
+ 1 - 2 - A (only local)
+ \
+ 3 - B (pushed)
+
+ Because A branch not pushed on server before we need mail about all
commits including 1-2. e.g. 1-B
+
+
+ 1 - 2 - 3 - 4 - A (already on server)
+ \ /
+ 5 - 6 - B (pushed)
+
+ We can't know what we need also 5 commit in B, so we mailed only about B
commit for this branch.
+ 2-6 commits was mailed in A branch.
+
+
+ 1 - 2 - 3 - A (already on server)
+ \ \
+ 5 - 6 - B (pushed)
+ We can't know what we need also 3 commit in B mail... any ideas?
+ Now we send mail with 5-B commits only.
+
+
+
+ Deleted branch (O..0):
+
+ We don't care about revisions in deleted branch. (or care?)
+
+
+ Update branch (O..N):
+
+
+ 1 - 2 - O - 3 - 4 - N
+
+ Maill full log between O and N. (e.g. 3-N) git rev-list O..N
+
+
+ 1 - 2 - N 1 - 2 - 3 - 4 - N
+ \\ or \\
+ 3 - 4 - O 5 - 6 - O
+
+ It's mean user used --force option for pull and remove previosly revisions.
+ (rewind N revision in first case and replace 5-O revisions by 4-N)
+ We can check it by command: git rev-list N..O.
+ If result of this command not empty - we have such cases.
+ If result of "git merge-base O N" will be equal N - we have first case.
+ We send mail with info about rewind or replace.
+ (Realization of this case in progress)
+
+
+------------
+Tag mail:
+
+ Add, delete and update tag:
+ If new(updated) tag is annotated - we write full info about it and target.
+ If it not annotated - only about commit.
+
+ For old(removed) tag - we write only sha of old commit/tag.
+
+
+------------
+Commit mail:
+ (Realization of this part in progress)
\ No newline at end of file
diff --git a/lib/Git/PostReceiveHook.php b/lib/Git/PostReceiveHook.php
index 195c8c2..49e5499 100644
--- a/lib/Git/PostReceiveHook.php
+++ b/lib/Git/PostReceiveHook.php
@@ -67,43 +67,6 @@ class PostReceiveHook extends ReceiveHook
}
- /*
- * Note:
- * * - commits in push,
- * digits - simply commits
- * chars - branches
- * + - commits already in server git repository
- * without + - commits in local git repository
- *
- * Situation #1.
- *
- * 1+ - 2* - A*
- * \
- * 3* - B*
- *
- * Problem: we have 0-B for B branch in push input data.
- * Solution: git rev-list B --not A -> 3-B (--not A C D E F ...
all branches)
- *
- * Situation #2.
- * 1 - 2 - A
- * \
- * 3* - B*
- * Problem: we will have 0-B in rev-list.
- * Solution: ?
- *
- * Situation #3.
- *
- * 1+ - 2+ - 3+ - A+
- * \ /
- * 4* - 5* - B*
- * Problem: we will have 5-B in rev-list, but what about 4 commit?
- *
- * Solution: ?
- *
- *
- * ... more problems
- *
- */
private function sendBranchMail(array $branch)
{
Thank you for your contribution.
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php