1. 16 8月, 2007 3 次提交
  2. 06 8月, 2007 2 次提交
  3. 01 8月, 2007 1 次提交
  4. 19 7月, 2007 1 次提交
  5. 18 7月, 2007 1 次提交
    • J
      Do not expect unlink(2) to fail on a directory. · fa2e71c9
      Junio C Hamano 提交于
      When "git checkout-index" checks out path A/B/C, it makes sure A
      and A/B are truly directories; if there is a regular file or
      symlink at A, we prefer to remove it.
      
      We used to do this by catching an error return from mkdir(2),
      and on EEXIST did unlink(2), and when it succeeded, tried
      another mkdir(2).
      
      Thomas Glanzmann found out the above does not work on Solaris
      for a root user, as unlink(2) was so old fashioned there that it
      allowed to unlink a directory.
      
      As pointed out, this still doesn't guarantee that git won't call
      "unlink()" on a directory (race conditions etc), but that's
      fundamentally true (there is no "funlink()" like there is
      "fstat()"), and besides, that is in no way git-specific (ie it's
      true of any application that gets run as root).
      Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      fa2e71c9
  6. 13 7月, 2007 1 次提交
  7. 12 7月, 2007 3 次提交
    • J
      Teach read-tree 2-way merge to ignore intermediate symlinks · ec0603e1
      Junio C Hamano 提交于
      Earlier in 16a4c617, we taught "read-tree -m -u" not to be
      confused when switching from a branch that has a path frotz/filfre
      to another branch that has a symlink frotz that points at xyzzy/
      directory.  The fix was incomplete in that it was still confused
      when coming back (i.e. switching from a branch with frotz -> xyzzy/
      to another branch with frotz/filfre).
      
      This fix is rather expensive in that for a path that is created
      we would need to see if any of the leading component of that
      path exists as a symbolic link in the filesystem (in which case,
      we know that path itself does not exist, and the fact we already
      decided to check it out tells us that in the index we already
      know that symbolic link is going away as there is no D/F
      conflict).
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      ec0603e1
    • J
      Merge branch 'maint' of git://repo.or.cz/git-gui into maint · 1b2782a5
      Junio C Hamano 提交于
      * 'maint' of git://repo.or.cz/git-gui:
        git-gui: Work around bad interaction between Tcl and cmd.exe on ^{tree}
        git-gui: Don't linewrap within console windows
        git-gui: Correct ls-tree buffering problem in browser
        git-gui: Skip nicknames when selecting author initials
        git-gui: Ensure windows shortcuts always have .bat extension
        git-gui: Include a Push action on the left toolbar
        git-gui: Bind M1-P to push action
        git-gui: Don't bind F5/M1-R in all windows
        git-gui: Unlock the index when cancelling merge dialog
        git-gui: properly popup error if gitk should be started but is not installed
      1b2782a5
    • S
      git-gui: Work around bad interaction between Tcl and cmd.exe on ^{tree} · 20f1a10b
      Shawn O. Pearce 提交于
      From Johannes Sixt <J.Sixt@eudaptics.com>:
      > It seems that MSYS's wish does some quoting for Bourne shells,
      > in particular, escape the first '{' of the "^{tree}" suffix, but
      > then it uses cmd.exe to run "git rev-parse". However, cmd.exe does
      > not remove the backslash, so that the resulting rev expression
      > ends up in git's guts as unrecognizable garbage: rev-parse fails,
      > and git-gui hickups in a way that it must be restarted.
      
      Johannes originally submitted a patch to this section of commit.tcl
      to use `git rev-parse $PARENT:`, but not all versions of Git will
      accept that format.  So I'm just taking the really simple approach
      here of scanning the first line of the commit to grab its tree.
      About the same cost, but works everywhere.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      20f1a10b
  8. 10 7月, 2007 3 次提交
    • S
      Clarify documentation of fast-import's D subcommand · 512e44b2
      Shawn O. Pearce 提交于
      The 'D' subcommand within a commit can also delete a directory
      recursively.  This wasn't clear in the prior version of the
      documentation, leading to a question on the mailing list.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      512e44b2
    • S
      git-gui: Don't linewrap within console windows · e87fb0f1
      Shawn O. Pearce 提交于
      If we get more than 80 characters of text in a single line odds
      are it is output from git-fetch or git-push and its showing a
      lot of detail off to the right edge that is not so important to
      the average user.  We still want to make sure we show everything
      we need, but we can get away with that information being off to
      the side with a horizontal scrollbar.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      e87fb0f1
    • S
      git-gui: Correct ls-tree buffering problem in browser · 56e29f59
      Shawn O. Pearce 提交于
      Our file browser was showing bad output as it did not properly buffer
      a partial record when read from `ls-tree -z`.  This did not show up on
      my Mac OS X system as most trees are small, the pipe buffers generally
      big and `ls-tree -z` was generally fast enough that all data was ready
      before Tcl started to read.  However on my Cygwin system one of my
      production repositories had a large enough tree and packfile that it
      took a couple of pipe buffers for `ls-tree -z` to complete its dump.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      56e29f59
  9. 09 7月, 2007 5 次提交
  10. 08 7月, 2007 1 次提交
  11. 06 7月, 2007 4 次提交
    • S
      git-gui: Ensure windows shortcuts always have .bat extension · 47282d46
      Shawn O. Pearce 提交于
      Apparently under some setups on Windows Tk is hiding our file
      extension recommendation of ".bat" from the user and that is
      allowing the user to create a shortcut file which has no file
      extension.  Double clicking on such a file in Windows Explorer
      brings up the associate file dialog, as Windows does not know
      what application to launch.
      
      We now append the file extension ".bat" to the filename of the
      shortcut file if it has no extension or if it has one but it is
      not ".bat".
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      47282d46
    • S
      git-gui: Include a Push action on the left toolbar · 87b49a53
      Shawn O. Pearce 提交于
      Pushing changes to a remote system is a very common action for
      many users of git-gui, so much so that in some workflows a user
      is supposed to push immediately after they make a local commit
      so that their change(s) are immediately available for their
      teammates to view and build on top of.
      
      Including the push button right below the commit button on the
      left toolbar indicates that users should probably perform this
      action after they have performed the commit action.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      87b49a53
    • S
      git-gui: Bind M1-P to push action · 840bcfa7
      Shawn O. Pearce 提交于
      Users often need to be able to push the current branch so that they
      can publish their recent changes to anyone they are collaborating
      with on the project.  Associating a keyboard action with this will
      make it easier for keyboard-oriented users to quickly activate the
      push features.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      840bcfa7
    • S
      git-gui: Don't bind F5/M1-R in all windows · f1e031bb
      Shawn O. Pearce 提交于
      We actually only want our F5/M1-R keystroke bound in the main window.
      Within a browser/blame/console window pressing these keys should not
      execute the rescan action.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      f1e031bb
  12. 04 7月, 2007 5 次提交
  13. 03 7月, 2007 2 次提交
    • M
    • A
      Make git-prune submodule aware (and fix a SEGFAULT in the process) · 8d2244ba
      Andy Parkins 提交于
      I ran git-prune on a repository and got this:
      
       $ git-prune
       error: Object 228f8065b930120e35fc0c154c237487ab02d64a is a blob, not a commit
       Segmentation fault (core dumped)
      
      This repository was a strange one in that it was being used to provide
      its own submodule.  That is, the repository was cloned into a
      subdirectory, an independent branch checked out in that subdirectory,
      and then it was marked as a submodule.  git-prune then failed in the
      above manner.
      
      The problem was that git-prune was not submodule aware in two areas.
      
      Linus said:
      
       > So what happens is that something traverses a tree object, looks at each
       > entry, sees that it's not a tree, and tries to look it up as a blob. But
       > subprojects are commits, not blobs, and then when you look at the object
       > more closely, you get the above kind of object type confusion.
      
      and included a patch to add an S_ISGITLINK() test to reachable.c's
      process_tree() function.  That fixed the first git-prune error, and
      stopped it from trying to process the gitlink entries in trees as if
      they were pointers to other trees (and of course failing, because
      gitlinks _aren't_ trees).  That part of this patch is his.
      
      The second area is add_cache_refs().  This is called before starting the
      reachability analysis, and was calling lookup_blob() on every object
      hash found in the index.  However, it is no longer true that every hash
      in the index is a pointer to a blob, some of them are gitlinks, and are
      not backed by any object at all, they are commits in another repository.
      Normally this bug was not causing any problems, but in the case of the
      self-referencing repository described above, it meant that the gitlink
      hash was being marked as being of type OBJ_BLOB by add_cache_refs() call
      to lookup_blob().  Then later, because that hash was also pointed to by
      a ref, add_one_ref() would treat it as a commit; lookup_commit() would
      return a NULL because that object was already noted as being an
      OBJ_BLOB, not an OBJ_COMMIT; and parse_commit_buffer() would SEGFAULT on
      that NULL pointer.
      
      The fix made by this patch is to not blindly call lookup_blob() in
      reachable.c's add_cache_refs(), and instead skip any index entries that
      are S_ISGITLINK().
      Signed-off-by: NAndy Parkins <andyparkins@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      8d2244ba
  14. 02 7月, 2007 1 次提交
  15. 01 7月, 2007 3 次提交
  16. 30 6月, 2007 1 次提交
  17. 29 6月, 2007 1 次提交
  18. 27 6月, 2007 2 次提交
    • S
      git-gui: Don't require a .pvcsrc to create Tools/Migrate menu hack · 7e508eb1
      Shawn O. Pearce 提交于
      The Tools/Migrate menu option is a hack just for me.  Yes, that's
      right, git-gui has a hidden feature that really only works for me,
      and the users that I support within my day-job's great firewall.
      The menu option is not supported outside of that environment.
      
      In the past we only enabled Tools/Migrate if our special local
      script 'gui-miga' existed in the proper location, and if there
      was a special '.pvcsrc' in the top level of the working directory.
      This latter test for the '.pvcsrc' file is now failing, as the file
      was removed from all Git repositories due to changes made to other
      tooling within the great firewall's realm.
      
      I have changed the test to only work on Cygwin, and only if the
      special 'gui-miga' is present.  This works around the configuration
      changes made recently within the great firewall's realm, but really
      this entire Tools/Migrate thing should be abstracted out into some
      sort of plugin system so other users can extend git-gui as they need.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      7e508eb1
    • S
      git-gui: Don't nice git blame on MSYS as nice is not supported · fffaaba3
      Shawn O. Pearce 提交于
      Johannes Sixt reported that MinGW/MSYS does not have a nice.exe to
      drop the priority of a child process when it gets spawned.  So we
      have to avoid trying to start `git blame` through nice when we are
      on Windows and do not have Cygwin available to us.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      fffaaba3