summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-06-20refs: implement simple transactions for the packed-refs fileLibravatar Michael Haggerty3-21/+98
Handle simple transactions for the packed-refs file at the packed_ref_cache level via new functions lock_packed_refs(), commit_packed_refs(), and rollback_packed_refs(). Only allow the packed ref cache to be modified (via add_packed_ref()) while the packed refs file is locked. Change clone to add the new references within a transaction. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-20refs: wrap the packed refs cache in a level of indirectionLibravatar Michael Haggerty1-6/+26
As we know, we can solve any problem in this manner. In this case, the problem is to avoid freeing a packed refs cache while somebody is using it. So add a level of indirection as a prelude to reference-counting the packed refs cache. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-20pack_refs(): split creation of packed refs and entry writingLibravatar Michael Haggerty1-14/+34
Split pack_refs() into multiple passes: * Iterate over loose refs. For each one that can be turned into a packed ref, create a corresponding entry in the packed refs cache. * Write the packed refs to the packed-refs file. This change isolates the mutation of the packed-refs file to a single place. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-20repack_without_ref(): split list curation and entry writingLibravatar Michael Haggerty1-12/+50
The repack_without_ref() function first removes the deleted ref from the internal packed-refs list, then writes the packed-refs list to disk, omitting any broken or stale entries. This patch splits that second step into multiple passes: * collect the list of refnames that should be deleted from packed_refs * delete those refnames from the cache * write the remainder to the packed-refs file The purpose of this change is to make the "write the remainder" part reusable. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-14Merge branch 'mh/reflife'Libravatar Junio C Hamano15-121/+229
Define memory ownership and lifetime rules for what for-each-ref feeds to its callbacks (in short, "you do not own it, so make a copy if you want to keep it"). * mh/reflife: (25 commits) refs: document the lifetime of the args passed to each_ref_fn register_ref(): make a copy of the bad reference SHA-1 exclude_existing(): set existing_refs.strdup_strings string_list_add_refs_by_glob(): add a comment about memory management string_list_add_one_ref(): rename first parameter to "refname" show_head_ref(): rename first parameter to "refname" show_head_ref(): do not shadow name of argument add_existing(): do not retain a reference to sha1 do_fetch(): clean up existing_refs before exiting do_fetch(): reduce scope of peer_item object_array_entry: fix memory handling of the name field find_first_merges(): remove unnecessary code find_first_merges(): initialize merges variable using initializer fsck: don't put a void*-shaped peg in a char*-shaped hole object_array_remove_duplicates(): rewrite to reduce copying revision: use object_array_filter() in implementation of gc_boundary() object_array: add function object_array_filter() revision: split some overly-long lines cmd_diff(): make it obvious which cases are exclusive of each other cmd_diff(): rename local variable "list" -> "entry" ...
2013-06-14Merge branch 'kb/full-history-compute-treesame-carefully-2'Libravatar Junio C Hamano7-91/+750
Major update to the revision traversal logic to improve culling of irrelevant parents while traversing a mergy history. * kb/full-history-compute-treesame-carefully-2: revision.c: make default history consider bottom commits revision.c: don't show all merges for --parents revision.c: discount side branches when computing TREESAME revision.c: add BOTTOM flag for commits simplify-merges: drop merge from irrelevant side branch simplify-merges: never remove all TREESAME parents t6012: update test for tweaked full-history traversal revision.c: Make --full-history consider more merges Documentation: avoid "uninteresting" rev-list-options.txt: correct TREESAME for P t6111: add parents to tests t6111: allow checking the parents as well t6111: new TREESAME test set t6019: test file dropped in -s ours merge decorate.c: compact table when growing
2013-06-14Merge branch 'rr/remove-contrib-some'Libravatar Junio C Hamano5-792/+0
Remove stale contrib/ material. * rr/remove-contrib-some: contrib: drop blameview/ directory contrib: remove continuous/ and patches/
2013-06-12Fix `git svn` `rebase` & `dcommit` if top-level HEAD directory existLibravatar Slava Kardakov1-2/+2
When a file (or a directory) called HEAD exists in the working tree, internal calls git svn makes trigger "did you mean a revision or a path?" ambiguity check. $ git svn rebase fatal: ambiguous argument 'HEAD': both revision and filename Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' rev-list --first-parent --pretty=medium HEAD: command returned error: 128 Explicitly disambiguate by adding "--" after the revision. Signed-off-by: Slava Kardakov <ojab@ojab.ru> Reviewed-by: Jeff King <peff@peff.net> Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-12contrib: drop blameview/ directoryLibravatar Jeff King2-164/+0
Blameview was a quick-and-dirty demonstration of how blame's incremental output could be used in an interface. These days one can find much better (and less ugly!) demonstrations in "git gui blame" and "tig blame". The only advantage blameview has is that its code is perhaps simpler to read. However, that is balanced by the fact that it probably has bugs, as nobody uses it nor has touched the code in 6 years. An implementor is probably better off just reading the "incremental output" section of "man git-blame". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-11Merge branch 'maint'Libravatar Junio C Hamano2-1/+1
* maint: t0070 "mktemp to unwritable directory" needs SANITY pre-push.sample: Make the script executable
2013-06-11Merge branch 'maint-1.8.2' into maintLibravatar Junio C Hamano2-1/+1
* maint-1.8.2: t0070 "mktemp to unwritable directory" needs SANITY pre-push.sample: Make the script executable
2013-06-11t0070 "mktemp to unwritable directory" needs SANITYLibravatar Torsten Bögershausen1-1/+1
Use the SANITY prerequisite when testing if a temp file can be created in a read only directory. Skip the test under CYGWIN, or skip it under Unix/Linux when it is run as root. Signed-off-by: Torsten Bögershausen <tboegi@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-11Update draft release notesLibravatar Junio C Hamano1-1/+48
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-11Merge branch 'cm/gitweb-project-list-persistent-cgi-fix'Libravatar Junio C Hamano1-1/+1
"gitweb" forgot to clear a global variable $search_regexp upon each request, mistakenly carrying over the previous search to a new one when used as a persistent CGI. * cm/gitweb-project-list-persistent-cgi-fix: gitweb: fix problem causing erroneous project list
2013-06-11Merge branch 'rr/maint-fetch-tag-doc-asterisks'Libravatar Junio C Hamano1-1/+1
* rr/maint-fetch-tag-doc-asterisks: fetch-options.txt: prevent a wildcard refspec from getting misformatted
2013-06-11Merge branch 'rr/rebase-autostash'Libravatar Junio C Hamano8-16/+235
* rr/rebase-autostash: rebase: implement --[no-]autostash and rebase.autostash rebase --merge: return control to caller, for housekeeping rebase -i: return control to caller, for housekeeping am: return control to caller, for housekeeping rebase: prepare to do generic housekeeping rebase -i: don't error out if $state_dir already exists am: tighten a conditional that checks for $dotest
2013-06-11Merge branch 'jk/test-exit-code-by-signal'Libravatar Junio C Hamano1-0/+7
* jk/test-exit-code-by-signal: t0005: skip signal death exit code test on Windows t0005: test git exit code from signal death
2013-06-11Merge branch 'fc/at-head'Libravatar Junio C Hamano5-57/+123
Instead of typing four capital letters "HEAD", you can say "@" instead. * fc/at-head: sha1_name: compare variable with constant, not constant with variable Add new @ shortcut for HEAD sha1_name: refactor reinterpret() sha1_name: check @{-N} errors sooner sha1_name: reorganize get_sha1_basic() sha1_name: don't waste cycles in the @-parsing loop sha1_name: remove unnecessary braces sha1_name: remove no-op tests: at-combinations: @{N} versus HEAD@{N} tests: at-combinations: increase coverage tests: at-combinations: improve nonsense() tests: at-combinations: check ref names directly tests: at-combinations: simplify setup
2013-06-11Merge branch 'ar/wildmatch-foldcase'Libravatar Junio C Hamano2-6/+56
The wildmatch engine did not honor WM_CASEFOLD option correctly. * ar/wildmatch-foldcase: wildmatch: properly fold case everywhere
2013-06-11Merge branch 'tr/sha1-file-silence-loose-object-info-under-prune-race'Libravatar Junio C Hamano1-1/+1
* tr/sha1-file-silence-loose-object-info-under-prune-race: sha1_file: silence sha1_loose_object_info
2013-06-11Merge branch 'nd/warn-ambiguous-object-name'Libravatar Junio C Hamano4-2/+44
"git cmd <name>", when <name> happens to be a 40-hex string, directly uses the 40-hex string as an object name, even if a ref "refs/<some hierarchy>/<name>" exists. This disambiguation order is unlikely to change, but we should warn about the ambiguity just like we warn when more than one refs/ hierachies share the same name. * nd/warn-ambiguous-object-name: get_sha1: warn about full or short object names that look like refs
2013-06-11Merge branch 'rr/diffcore-pickaxe-doc'Libravatar Junio C Hamano3-28/+59
Update the low-level diffcore documentation on -S/-G and --pickaxe-all. * rr/diffcore-pickaxe-doc: diffcore-pickaxe doc: document -S and -G properly diffcore-pickaxe: make error messages more consistent
2013-06-11Merge branch 'cr/git-work-tree-sans-git-dir'Libravatar Junio C Hamano1-3/+1
These days, "git --work-tree=there cmd" without specifying an explicit --git-dir=here will do the usual discovery, but we had a description of older behaviour in the documentation. * cr/git-work-tree-sans-git-dir: git.txt: remove stale comment regarding GIT_WORK_TREE
2013-06-11Merge branch 'mm/mediawiki-https-fail-message'Libravatar Junio C Hamano1-8/+18
Hint users when https:// connection failed to check the certificate. * mm/mediawiki-https-fail-message: git-remote-mediawiki: better error message when HTTP(S) access fails
2013-06-11Merge branch 'cb/log-follow-with-combined'Libravatar Junio C Hamano2-0/+17
* cb/log-follow-with-combined: fix segfault with git log -c --follow
2013-06-11Merge branch 'xq/credential-osxkeychain'Libravatar Junio C Hamano1-1/+11
* xq/credential-osxkeychain: credential-osxkeychain: support more protocols
2013-06-11Merge branch 'fc/do-not-use-the-index-in-add-to-index'Libravatar Junio C Hamano1-3/+3
* fc/do-not-use-the-index-in-add-to-index: read-cache: trivial style cleanups read-cache: fix wrong 'the_index' usage
2013-06-11Merge branch 'fc/remote-bzr'Libravatar Junio C Hamano1-57/+55
* fc/remote-bzr: remote-bzr: add fallback check for a partial clone remote-bzr: reorganize the way 'wanted' works remote-bzr: trivial cleanups remote-bzr: change global repo remote-bzr: delay cloning/pulling remote-bzr: simplify get_remote_branch() remote-bzr: fix for files with spaces remote-bzr: recover from failed clones
2013-06-11Merge branch 'fc/remote-hg'Libravatar Junio C Hamano6-522/+1300
* fc/remote-hg: (50 commits) remote-hg: add support for --force remote-hg: add support for --dry-run remote-hg: check if a fetch is needed remote-hg: trivial cleanup remote-helpers: improve marks usage remote-hg: add check_push() helper remote-hg: add setup_big_push() helper remote-hg: remove files before modifications remote-hg: improve lightweight tag author remote-hg: use remote 'default' not local one remote-hg: improve branch listing remote-hg: simplify branch_tip() remote-hg: check diverged bookmarks remote-hg: pass around revision refs remote-hg: implement custom checkheads() remote-hg: implement custom push() remote-hg: only update necessary revisions remote-hg: force remote bookmark push selectively remote-hg: reorganize bookmark handling remote-hg: add test for failed double push ...
2013-06-11Merge branch 'rj/mingw-cygwin'Libravatar Junio C Hamano12-27/+15
Update build for Cygwin 1.[57]. Torsten Bögershausen reports that this is fine with Cygwin 1.7 ($gmane/225824) so let's try moving it ahead. * rj/mingw-cygwin: cygwin: Remove the CYGWIN_V15_WIN32API build variable mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE
2013-06-11Merge branch 'fc/completion-less-ls-remote'Libravatar Junio C Hamano1-8/+2
* fc/completion-less-ls-remote: completion: avoid ls-remote in certain scenarios
2013-06-11Merge branch 'tr/test-commit-only-on-orphan'Libravatar Junio C Hamano1-0/+13
* tr/test-commit-only-on-orphan: Test 'commit --only' after 'checkout --orphan'
2013-06-11Merge branch 'rs/unpack-trees-plug-leak'Libravatar Junio C Hamano6-88/+133
* rs/unpack-trees-plug-leak: unpack-trees: free cache_entry array members for merges diff-lib, read-tree, unpack-trees: mark cache_entry array paramters const diff-lib, read-tree, unpack-trees: mark cache_entry pointers const unpack-trees: create working copy of merge entry in merged_entry unpack-trees: factor out dup_entry read-cache: mark cache_entry pointers const cache: mark cache_entry pointers const
2013-06-11Merge branch 'rr/die-on-missing-upstream'Libravatar Junio C Hamano2-17/+22
When a reflog notation is used for implicit "current branch", we did not say which branch and worse said "branch ''". * rr/die-on-missing-upstream: sha1_name: fix error message for @{<N>}, @{<date>} sha1_name: fix error message for @{u}
2013-06-11pre-push.sample: Make the script executableLibravatar Wieland Hoffmann1-0/+0
githooks(5) says that "[...]the .sample files are executable by default" which was not true. Signed-off-by: Wieland Hoffmann <themineo@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-10Sync with 1.8.3.1Libravatar Junio C Hamano5-5/+24
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-10Git 1.8.3.1Libravatar Junio C Hamano4-2/+22
Primarily to push out two regression issues that seem to affect many people, namely, the ".gitignore !directory" bug and "daemon cannot read from $HOME owned by root" bug. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-10mingw: make mingw_signal return the correct handlerLibravatar Erik Faye-Lund1-1/+3
Returning the SIGALRM handler for SIGINT is not very useful. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-09Merge branch 'jn/config-ignore-inaccessible' into maintLibravatar Junio C Hamano5-15/+22
A git daemon that starts as "root" and then drops privilege often leaves $HOME set to that of the root user, which is unreadable by the daemon process, which was diagnosed as a configuration error. Make per-user configuration files that are inaccessible due to EACCES as though these files do not exist to avoid this issue, as the tightening which was originally meant as an additional security has annoyed enough sysadmins. * jn/config-ignore-inaccessible: config: allow inaccessible configuration under $HOME
2013-06-09Merge branch 'kb/status-ignored-optim-2' into maintLibravatar Junio C Hamano2-0/+21
Fix recent regression of .gitignore files that list !directory to mark it not-ignored. * kb/status-ignored-optim-2: dir.c: fix ignore processing within not-ignored directories
2013-06-09submodule: remove redundant check for the_index.initializedLibravatar René Scharfe1-3/+2
read_cache already performs the same check and returns immediately if the cache has already been loaded. Signed-off-by: René Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-09Document .git/modulesLibravatar Fredrik Gustafsson1-0/+3
A note in the beginning of this document describes the behavior already. This patch just adds where to find the repositories. Signed-off-by: Fredrik Gustafsson <iveqy@iveqy.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-07gitweb: fix problem causing erroneous project listLibravatar Charles McGarvey1-1/+1
The bug is manifest when running gitweb in a persistent process (e.g. FastCGI, PSGI), and it's easy to reproduce. If a gitweb request includes the searchtext parameter (i.e. s), subsequent requests using the project_list action--which is the default action--and without a searchtext parameter will be filtered by the searchtext value of the first request. This is because the value of the $search_regexp global (the value of which is based on the searchtext parameter) is currently being persisted between requests. Instead, clear $search_regexp before dispatching each request. Signed-off-by: Charles McGarvey <chazmcgarvey@brokenzipper.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-07fetch-options.txt: prevent a wildcard refspec from getting misformattedLibravatar Junio C Hamano1-1/+1
When explaining the "--tags" option as an equivalent to giving an explicit "refs/tags/*:refs/tags/*" refspec, the two asterisks were misinterpreted by AsciiDoc as a request to typeset the string segment between them in bold. We could fix it in two ways. We can replace them with {asterisk}s while keeping the string as body text, or we can mark it as a literal string with backquotes around it. Let's do the latter, as it is teaching the user an "exactly as typed" alternative. Noticed-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-07Merge tag 'post183-for-junio' of http://github.com/msysgit/gitLibravatar Junio C Hamano4-2/+35
Collected msysgit build patches for upstream This set of patches collects a number of build fixes that have been used on the msysgit port for a while and merging upstream should simplify future maintenance. * tag 'post183-for-junio' of http://github.com/msysgit/git: Set the default help format to html for msys builds. Ensure the resource file is rebuilt when the version changes. Windows resource: handle dashes in the Git version gracefully Provide a Windows version resource for the git executables. msysgit: Add the --large-address-aware linker directive to the makefile. Define NO_GETTEXT for Git for Windows Makefile: Do not use OLD_ICONV on MINGW anymore
2013-06-06Update draft release notes to 1.8.4Libravatar Junio C Hamano1-0/+23
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-06Merge branch 'rj/mingw-compat-st-mode-bits'Libravatar Junio C Hamano1-1/+3
* rj/mingw-compat-st-mode-bits: path: Fix a sparse warning
2013-06-06Merge branch 'sb/archive-zip-double-assignment-fix'Libravatar Junio C Hamano1-1/+0
* sb/archive-zip-double-assignment-fix: archive-zip:write_zip_entry: Remove second reset of size variable to zero.
2013-06-06Merge branch 'rr/push-head'Libravatar Junio C Hamano1-7/+14
"git push $there HEAD:branch" did not resolve HEAD early enough, so it was easy to flip it around while push is still going on and push out a branch that the user did not originally intended when the command was started. * rr/push-head: push: make push.default = current use resolved HEAD push: fail early with detached HEAD and current push: factor out the detached HEAD error message
2013-06-06Merge branch 'ks/difftool-dir-diff-copy-fix'Libravatar Junio C Hamano2-7/+21
"difftool --dir-diff" did not copy back changes made by the end-user in the diff tool backend to the working tree in some cases. * ks/difftool-dir-diff-copy-fix: difftool --dir-diff: allow changing any clean working tree file