git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Dumb idea on git library for script languages

From
Ttsgates <tsgatesv@gmail.com>
Date
Apr 28, 2008, 07:03 UTC
Message-ID
<1209366216.17090.4.camel@prosumer>
Please comment on my naive idea.

When I try to use git in python, there are no fancy ways not to fork any processes. (except not active git library) I know it is design policy of git, one job for one process.

Anyhow, I need to call git in python and perl, so I try to think.
I assumed that 
 1. all cmd_*() is designed in a process basis,
    so it is ok to free all memories which invoked after calling cmd_*()
    
 2. result of cmd_*() is output only
    so parse it in order to use in script language
    right before call cmd_*() -> redirect stdout to anything
 3. 'die()' can be escaped by using "setjmp/longjmp"
 4. actually I need only cmd_*() or little low level functions from
script
 
here is snippets of naive pseudo codes

------------------------------------------------------------ # will be called from the python/perl code ------------------------------------------------------------

lib_git_do() {
  if ( setjmp( exterend here ) ) {
    start_trace()
    cmd_do()
    stop_trace()
  } else {
    # called from die (from longjmp)
    return error occured
  }
  
  return parse_do();
}
------------------------------------------------------------
start_trace() {
  init_mem()
  
  start_malloc_trace()
  start_stdout_trace()
}
stop_trace() {
  stop_stdout_trace()
  stop_malloc_trace()
  clean_mem()
}
start_malloc_trace() {
  hook __malloc_hook
  hook __realloc_hook
  hook __free_hook
}
malloc_hook( size ) {
  void * rtn = malloc( size )
  if ( rtn ) {
     add_to_mem_record( thread_id, rtn )
  }
}
free_hook( ptr ) {
  if ( free( ptr ) ) {
     del_mem_record( thread_id, ptr )
  }
}
clean_mem() {
  for_each ( mem_records ) 
    free( ptr )
}
------------------------------------------------------------
pros
 0. easy to implement
 1. guarantee thread safety
 2. no memory leak
 3. not depend on git source
 4. able to take advantage of script codes, no forking overhead
cons
 0. not fancy
 1. need dumb parsing
 2. just temporary solution
 but, I want to use it in review board or track like system, right now.

If there are any other good suggestions or recommendations on it, please recommend it.

Best regards
Next: Jakub Narebski
Message 1 of 5 in “Dumb idea on git library for script languages”
  1. tsgatesApr 28, 2008
  2. Jakub NarebskiApr 28, 2008
  3. Johannes SchindelinApr 28, 2008
  4. Eric HanchrowApr 29, 2008
  5. Govind SalinasApr 29, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.