Re: [PATCH 1/1] git: preview for v2.3.0-rc0

2015-01-13 Thread John Keeping
On Tue, Jan 13, 2015 at 09:56:47AM +0100, l...@eworm.de wrote:
 From: Christian Hesse m...@eworm.de
 
 * sort_string_list(): rename to string_list_sort() (upstream commit 3383e199)
 * update read_tree_recursive callback to pass strbuf as base (upstream
   commit 6a0b0b6d)
 
 Signed-off-by: Christian Hesse m...@eworm.de
 ---
  Makefile   |  4 ++--
  cgit.c |  2 +-
  git|  2 +-
  ui-blob.c  | 14 +++---
  ui-plain.c | 10 +-
  ui-tree.c  | 21 +++--
  6 files changed, 43 insertions(+), 10 deletions(-)
 
 diff --git a/Makefile b/Makefile
 index 38bf595..36c30a8 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -14,8 +14,8 @@ htmldir = $(docdir)
  pdfdir = $(docdir)
  mandir = $(prefix)/share/man
  SHA1_HEADER = openssl/sha.h
 -GIT_VER = 2.2.1
 -GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.gz
 +GIT_VER = 2.3.0.rc0
 +GIT_URL = 
 https://www.kernel.org/pub/software/scm/git/testing/git-$(GIT_VER).tar.gz
  INSTALL = install
  COPYTREE = cp -r
  MAN5_TXT = $(wildcard *.5.txt)
 diff --git a/cgit.c b/cgit.c
 index 79019c2..df301ea 100644
 --- a/cgit.c
 +++ b/cgit.c
 @@ -599,7 +599,7 @@ static int prepare_repo_cmd(void)
   free(tmp);
   return 1;
   }
 - sort_string_list(ctx.repo-submodules);
 + string_list_sort(ctx.repo-submodules);
   cgit_prepare_repo_env(ctx.repo);
   choose_readme(ctx.repo);
   return 0;
 diff --git a/git b/git
 index 9b7cbb3..addfb21 16
 --- a/git
 +++ b/git
 @@ -1 +1 @@
 -Subproject commit 9b7cbb315923e61bb0c4297c701089f30e116750
 +Subproject commit addfb21a94fb4e6b9d07b270f7bb3748767a8f38
 diff --git a/ui-blob.c b/ui-blob.c
 index c2de8d6..90fcf81 100644
 --- a/ui-blob.c
 +++ b/ui-blob.c
 @@ -33,6 +33,14 @@ static int walk_tree(const unsigned char *sha1, const char 
 *base, int baselen,
   return 0;
  }
  
 +static int walk_tree_buf(const unsigned char *sha1, struct strbuf *base,
 + const char *filename, unsigned mode, int stage,
 + void *context)
 +{
 + return walk_tree(sha1, base-buf, base-len,
 + filename, mode, stage, context);
 +}
 +

Is there any benefit to introducing a new function here?  In other
words, is walk_tree() used anywhere else?  If not, wouldn't it be
simpler to update the signature of the existing function?

(The same comment applies to several other places below.)

  int cgit_ref_path_exists(const char *path, const char *ref, int file_only)
  {
   unsigned char sha1[20];
 @@ -56,7 +64,7 @@ int cgit_ref_path_exists(const char *path, const char *ref, 
 int file_only)
   return 0;
   if (sha1_object_info(sha1, size) != OBJ_COMMIT)
   return 0;
 - read_tree_recursive(lookup_commit_reference(sha1)-tree, , 0, 0, 
 paths, walk_tree, walk_tree_ctx);
 + read_tree_recursive(lookup_commit_reference(sha1)-tree, , 0, 0, 
 paths, walk_tree_buf, walk_tree_ctx);
   return walk_tree_ctx.found_path;
  }
  
 @@ -87,7 +95,7 @@ int cgit_print_file(char *path, const char *head, int 
 file_only)
   type = sha1_object_info(sha1, size);
   if (type == OBJ_COMMIT  path) {
   commit = lookup_commit_reference(sha1);
 - read_tree_recursive(commit-tree, , 0, 0, paths, walk_tree, 
 walk_tree_ctx);
 + read_tree_recursive(commit-tree, , 0, 0, paths, 
 walk_tree_buf, walk_tree_ctx);
   if (!walk_tree_ctx.found_path)
   return -1;
   type = sha1_object_info(sha1, size);
 @@ -140,7 +148,7 @@ void cgit_print_blob(const char *hex, char *path, const 
 char *head, int file_onl
  
   if ((!hex)  type == OBJ_COMMIT  path) {
   commit = lookup_commit_reference(sha1);
 - read_tree_recursive(commit-tree, , 0, 0, paths, walk_tree, 
 walk_tree_ctx);
 + read_tree_recursive(commit-tree, , 0, 0, paths, 
 walk_tree_buf, walk_tree_ctx);
   type = sha1_object_info(sha1,size);
   }
  
 diff --git a/ui-plain.c b/ui-plain.c
 index 30fff89..891e9f7 100644
 --- a/ui-plain.c
 +++ b/ui-plain.c
 @@ -198,6 +198,14 @@ static int walk_tree(const unsigned char *sha1, const 
 char *base, int baselen,
   return 0;
  }
  
 +static int walk_tree_buf(const unsigned char *sha1, struct strbuf *base,
 + const char *filename, unsigned mode, int stage,
 + void *context)
 +{
 + return walk_tree(sha1, base-buf, base-len,
 + filename, mode, stage, context);
 +}
 +
  static int basedir_len(const char *path)
  {
   char *p = strrchr(path, '/');
 @@ -243,7 +251,7 @@ void cgit_print_plain(void)
   }
   else
   walk_tree_ctx.match_baselen = basedir_len(path_items.match);
 - read_tree_recursive(commit-tree, , 0, 0, paths, walk_tree, 
 walk_tree_ctx);
 + read_tree_recursive(commit-tree, , 0, 0, paths, walk_tree_buf, 
 walk_tree_ctx);
   if (!walk_tree_ctx.match)
   html_status(404, Not found, 0);
   else if (walk_tree_ctx.match == 2)
 diff --git 

Re: [PATCH 1/1] git: preview for v2.3.0-rc0

2015-01-13 Thread John Keeping
On Tue, Jan 13, 2015 at 10:57:39AM +0100, Christian Hesse wrote:
 John Keeping j...@keeping.me.uk on Tue, 2015/01/13 09:43:
  On Tue, Jan 13, 2015 at 09:56:47AM +0100, l...@eworm.de wrote:
   From: Christian Hesse m...@eworm.de
   
   * sort_string_list(): rename to string_list_sort() (upstream commit
   3383e199)
   * update read_tree_recursive callback to pass strbuf as base (upstream
 commit 6a0b0b6d)
   
   Signed-off-by: Christian Hesse m...@eworm.de
   ---
   [...]
  
  Is there any benefit to introducing a new function here?  In other
  words, is walk_tree() used anywhere else?  If not, wouldn't it be
  simpler to update the signature of the existing function?
  
  (The same comment applies to several other places below.)
 
 I just adopted the changes from git upstream to make things work. This is not
 intended for merge... And I will take a closer look for final patch when
 git v2.3.0 arrives. ;)
 
 Our code include three functions called 'walk_tree()' in ui-plain.c,
 ui-blob.c and ui-tree.c. Can this bring any trouble?

They're all static so they're limited to the files in which they're
declared.  The names won't appear in the final binary at all (except in
debug annotations).
___
CGit mailing list
CGit@lists.zx2c4.com
http://lists.zx2c4.com/mailman/listinfo/cgit