aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Merge branch 'jc/gitpm'Junio C Hamano2006-09-30
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * jc/gitpm: (52 commits) Remove -fPIC which was only needed for Git.xs Git.pm: Kill Git.xs for now Revert "Make it possible to set up libgit directly (instead of from the environment)" Revert "Git.pm: Introduce fast get_object() method" Revert "Convert git-annotate to use Git.pm" Fix compilation with Sun CC pass DESTDIR to the generated perl/Makefile Eliminate Scalar::Util usage from private-Error.pm Convert git-annotate to use Git.pm Git.pm: Introduce fast get_object() method Make it possible to set up libgit directly (instead of from the environment) Work around sed and make interactions on the backslash at the end of line. Git.pm: Introduce ident() and ident_person() methods Convert git-send-email to use Git.pm Git.pm: Add config() method Use $GITPERLLIB instead of $RUNNING_GIT_TESTS and centralize @INC munging INSTALL: a tip for running after building but without installing. Perly Git: make sure we do test the freshly built one. Git.pm: Don't #define around die Git.xs: older perl do not know const char * ...
| * Remove -fPIC which was only needed for Git.xsJunio C Hamano2006-09-29
| | | | | | | | | | | | | | | | The distinction between BASIC_ vs ALL_ is still kept, since it is not Git.xs specific -- we could face the same issue when we do other language bindings (e.g. Python). Signed-off-by: Junio C Hamano <junkio@cox.net>
| * Git.pm: Kill Git.xs for nowPetr Baudis2006-09-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes Git.xs from the repository for the time being. This should hopefully enable Git.pm to finally make its way to master. Git.xs is not going away forever. When the Git libification makes some progress, it will hopefully return (but most likely as an optional component, due to the portability woes) since the performance boosts are really important for applications like Gitweb or Cogito. It needs to go away now since it is not really reliable in case you use it for several repositories in the scope of a single process, and that is not possible to fix without some either very ugly or very intrusive core changes. Rest in peace. (While you can.) Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * Revert "Make it possible to set up libgit directly (instead of from the ↵Junio C Hamano2006-09-02
| | | | | | | | | | | | environment)" This reverts commit 0270083ded143fd49841e3d3d0cac5eb06081d2a.
| * Revert "Git.pm: Introduce fast get_object() method"Junio C Hamano2006-09-02
| | | | | | | | This reverts commit 3c479c37f8651d09e1d08b8d6ea9757164ee1235.
| * Revert "Convert git-annotate to use Git.pm"Junio C Hamano2006-09-02
| | | | | | | | This reverts commit 7fb39d5f58efd05e982fe148630edc97ded753b6.
| * Fix compilation with Sun CCDennis Stosberg2006-08-15
| | | | | | | | | | | | | | | | | | | | | | | | | | - Add the CFLAGS variable to config.mak.in to override the Makefile's default, which is gcc-specific and won't work with Sun CC. - Prefer "cc" over "gcc", because Pasky's Git.pm will not compile with gcc on Solaris at all. On Linux and the free BSDs "cc" is linked to "gcc" anyway. - Set correct flag to generate position-independent code. - Add "-xO3" (= use default optimization level) to CFLAGS. Signed-off-by: Dennis Stosberg <dennis@stosberg.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * Merge branch 'master' into pb/gitpmJunio C Hamano2006-08-15
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: (166 commits) git-apply --binary: clean up and prepare for --reverse Fix detection of ipv6 on Solaris Look for sockaddr_storage in sys/socket.h Solaris has strlcpy() at least since version 8 git-apply --reverse: simplify reverse option. t4116 apply --reverse test Make sha1flush void and remove conditional return. Make upload_pack void and remove conditional return. Make track_tree_refs void. Make pack_objects void. Make fsck_dir void. Make checkout_all void. Make show_entry void Make pprint_tag void and cleans up call in cmd_cat_file. Remove combine-diff.c::uninteresting() read-cache.c cleanup http-push.c cleanup diff.c cleanup builtin-push.c cleanup builtin-grep.c cleanup ...
| * | pass DESTDIR to the generated perl/MakefileEric Wong2006-08-13
| | | | | | | | | | | | | | | | | | | | | | | | Makes life for binary packagers easier, as the Perl modules will be installed inside DESTDIR. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | Merge branch 'master' into pb/gitpmJunio C Hamano2006-08-07
| |\ \ | | | | | | | | | | | | This is to resolve the conflicts with Ryan's annotate updates early.
| * | | Eliminate Scalar::Util usage from private-Error.pmPetr Baudis2006-07-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used just the blessed() routine so steal it from Scalar/Util.pm. Unfortunately, Scalar::Util is not bundled with older Perl versions. This is a newer much saner blessed() version by Randal L. Schwarz. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Convert git-annotate to use Git.pmPetr Baudis2006-07-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Together with the other converted scripts, this is probably still pu material; it appears to work fine for me, though. The speed gain from get_object() is about 10% (I expected more...). Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Introduce fast get_object() methodPetr Baudis2006-07-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Direct .xs routine. Note that it does not work 100% correctly when you juggle multiple repository objects, but it is not that bad either. The trouble is that we might reuse packs information for another Git project; that is not an issue since Git depends on uniqueness of SHA1 ids so if we have found the object somewhere else, it is nevertheless going to be the same object. It merely makes object existence detection through this method unreliable; it is duly noted in the documentation. At least that's how I see it, I hope I didn't overlook any other potential problem. I tested it for memory leaks and it appears to be doing ok. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Make it possible to set up libgit directly (instead of from the environment)Petr Baudis2006-07-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces a setup_git() function which is essentialy a (public) backend for setup_git_env() which lets anyone specify custom sources for the various paths instead of environment variables. Since the repositories may get switched on the fly, this also updates code that caches paths to invalidate them properly; I hope neither of those is a sweet spot. It is used by Git.xs' xs__call_gate() to set up per-repository data for libgit's consumption. No code actually takes advantage of it yet but get_object() will in the next patches. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Work around sed and make interactions on the backslash at the end of line.Junio C Hamano2006-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Traditionally 'i' and 'a' commands to sed have been unfriendly with make, primarily because different make implementations did unexpected things to backslashes at the end of lines. So work it around by not using 'i' command. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Introduce ident() and ident_person() methodsPetr Baudis2006-07-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | These methods can retrieve/parse the author/committer ident. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Convert git-send-email to use Git.pmPetr Baudis2006-07-03
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Add config() methodPetr Baudis2006-07-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This accessor will retrieve value(s) of the given configuration variable. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Use $GITPERLLIB instead of $RUNNING_GIT_TESTS and centralize @INC mungingPetr Baudis2006-07-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes the Git perl scripts check $GITPERLLIB instead of $RUNNING_GIT_TESTS, which makes more sense if you are setting up your shell environment to use a non-installed Git instance. It also weeds out the @INC munging from the individual scripts and makes Makefile add it during the .perl files processing, so that we can change just a single place when we modify this shared logic. It looks ugly in the scripts, too. ;-) And instead of doing arcane things with the @INC array, we just do 'use lib' instead, which is essentialy the same thing anyway. I first want to do three separate patches but it turned out that it's quite a lot neater when bundled together, so I hope it's ok. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | INSTALL: a tip for running after building but without installing.Junio C Hamano2006-07-03
| | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Perly Git: make sure we do test the freshly built one.Junio C Hamano2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We could BEGIN { push @INC, '@@INSTLIBDIR@@'; } but that is not a good idea for normal execution. The would prevent a workaround for a user who is trying to override an old, faulty Git.pm installed on the system path with a newer version installed under $HOME/. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Don't #define around diePetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Back in the old days, we called Git's die() from the .xs code, but we had to hijack Perl's die() for that. Now we don't call Git's die() so no need to do the hijacking and it silences a compiler warning. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.xs: older perl do not know const char *Johannes Schindelin2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both of these casts _should_ be safe, since you do not want to muck around with the version or the path anyway. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Avoid ppport.hPetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes us not include ppport.h which seems not to give us anything real anyway; it is useful for checking for portability warts but since Devel::PPPort is a portability wart itself, we shouldn't require it for build. You can check for portability problems by calling make check in perl/. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Remove PerlIO usage from Git.xsPetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PerlIO_*() is not portable before 5.7.3, according to ppport.h, and it's more clear what is going on when we do it in the Perl part of the Git module anyway. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Make perl interface a separate packagePavel Roskin2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Install it as a vendor package. Remove .packlist, perllocal.pod, Git.bs. Require perl(Error) for building so that our Error.pm is not installed. Signed-off-by: Pavel Roskin <proski@gnu.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Delete manuals if compiling without docsPavel Roskin2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise, rpm would complain about unpacked files. Signed-off-by: Pavel Roskin <proski@gnu.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Fix probing for already installed Error.pmPavel Roskin2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The syntax for 'require' was wrong, and it was always failing, which resulted in installing our own version of Error.pm anyways. Now we used to ship our own Error.pm in the same directory, so after fixing the syntax, 'require' always succeeds, but it does not test if the platform has Error.pm module installed anymore. So rename the source we ship to private-Error.pm, and install that as Error.pm when the platform does not have one already. Signed-off-by: Pavel Roskin <proski@gnu.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: clean generated files.Junio C Hamano2006-07-02
| | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Perly git: work around buggy make implementations.Junio C Hamano2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | FC4 uses gnumake 3.80 whose annoying "Entering directory..." messages are not silenced with -s alone. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Makefile: Set USE_PIC on x86-64Junio C Hamano2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On some platforms, Git.xs refuses to link with the rest of git unless the latter is compiled with -fPIC, and we have USE_PIC control in the Makefile for the user to set it. At least we know x86-64 is such, so set it in the Makefile. The original suggestion by Marco Roeland conservatively did this only for Linux x86-64, but let's keep the Makefile simple and if it breaks somebody let them holler. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Perly Git: arrange include path settings properly.Junio C Hamano2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before "use Git" takes effect, we would need to set up the Perl library path to point at the local installation location. So that instruction needs to be in BEGIN{} block. Pointed out and fixed by Pavel Roskin. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Add possibility to pass CFLAGS and LDFLAGS specific to the perl subdirDennis Stosberg2006-07-02
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Dennis Stosberg <dennis@stosberg.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Support for perl/ being built by a different compilerPetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dst_ on #git reported that on Solaris 9, Perl was built by Sun CC and perl/ is therefore being built with it as well, while the rest of Git is built with gcc. The problem (the first one visible, anyway) is that we passed perl/ even various gcc-specific options. This separates those to a special variable. This is not really meant for an application yet since it's not clear if it will alone help anything. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Makefile fix for SolarisDennis Stosberg2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Solaris' /bin/sh does not support $( )-style command substitution Signed-off-by: Dennis Stosberg <dennis@stosberg.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | "test" in Solaris' /bin/sh does not support -eDennis Stosberg2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Running "make clean" currently fails: [ ! -e perl/Makefile ] || make -C perl/ clean /bin/sh: test: argument expected make: *** [clean] Error 1 Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Fix Git->repository("/somewhere/totally/elsewhere")Petr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Swap hash_object() parametersPetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I'm about to introduce get_object() and it will be better for consistency if the object type always goes first. And writing 'blob' there explicitly is not much bother. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Try to support ActiveState output pipePetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code is stolen from git-annotate and completely untested since I don't have access to any Microsoft operating system now. Someone ActiveState-savvy should look at it anyway and try to implement the input pipe as well, if it is possible at all; also, the implementation seems to be horribly whitespace-unsafe. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: tentative fix to test the freshly built Git.pmJunio C Hamano2006-07-02
| | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: assorted build related fixes.Petr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - We passed our own *.a archives as LIBS to the submake that runs in perl/; separate LIBS and EXTLIBS and pass the latter which tells what the system libraries are used. - The quoting of preprocesor symbol definitions passed down to perl/ submake was loose and we lost double quotes around include directives. Use *_SQ to quote them properly. - The installation location of perl/ submake is not architecture neutral anymore, so use SITEARCH instead of SITELIB. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | perl: fix make cleanJunio C Hamano2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When perl/Makefile is stale with respect to perl/Makefile.PL, it prevents "make clean" from completing which is quite irritating. Fix it by calling subdirectory make clean twice as needed. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Perl interface: make testsuite work again.Junio C Hamano2006-07-02
| | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Perl interface: add build-time configuration to allow building with -fPICJunio C Hamano2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | On x86-64 it seems that Git.xs does not link without compiling the main git objects with -fPIC. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Convert git-mv to use Git.pmPetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fairly straightforward. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Add support for subdirectories inside of working copiesPetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds support for subdirectories inside of working copies; you can specify them in the constructor either as the Directory option (it will just get autodetected using rev-parse) or explicitly using the WorkingSubdir option. This makes Git->repository() do the exact same path setup and repository lookup as the Git porcelain does. This patch also introduces repo_path(), wc_path() and wc_subdir() accessor methods and wc_chdir() mutator. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Implement options for the command interfacePetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This gives the user a way to easily pass options to the command routines. Currently only the STDERR option is implemented and can be used to adjust what shall be done with error output of the called command (most usefully, it can be used to silence it). Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Enhance the command_pipe() mechanismPetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename command_pipe() to command_output_pipe(), outsource the functionality to _command_common_pipe(). Add command_input_pipe(). Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Handle failed commands' outputPetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently if an external command returns error exit code, a generic exception is thrown and there is no chance for the caller to retrieve the command's output. This patch introduces a Git::Error::Command exception class which is thrown in this case and contains both the error code and the captured command output. You can use the new git_cmd_try statement to fatally catch the exception while producing a user-friendly message. It also adds command_close_pipe() for easier checking of exit status of a command we have just a pipe handle of. It has partial forward dependency on the next patch, but basically only in the area of documentation. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | | Git.pm: Better error handlingPetr Baudis2006-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So far, errors just killed the whole program and in case of an error inside of libgit it would be totally uncatchable. This patch makes Git.pm throw standard Perl exceptions instead. In the future we might subclass Error to Git::Error or something but for now Error::Simple is more than enough. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>