* Re: On Sponsor Notices
From: Heikki Orsila @ 2008-09-24 22:55 UTC (permalink / raw)
To: Petr Baudis; +Cc: git, spearce
In-Reply-To: <20080924225120.GL10544@machine.or.cz>
On Thu, Sep 25, 2008 at 12:51:20AM +0200, Petr Baudis wrote:
> Now, Shawn has proposed 'Sponsored-by:' line
> at the header footer, which is also an interesting possibility.
In my opinion, one should aim for minimum amount of technically
irrelevant information. Extra lines cause penalty for reading logs.
--
Heikki Orsila
heikki.orsila@iki.fi
http://www.iki.fi/shd
^ permalink raw reply
* On Sponsor Notices
From: Petr Baudis @ 2008-09-24 22:51 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924204358.144077183@suse.cz>
Hi,
to follow up a little on the "This patch has been sponsored by
Novartis" messages - I have been on a summer internship at Novartis busy
deploying Git and these patches (still quite a few more to come, mostly
for gitweb) have been one of the main outputs of that work.
However, I'm not sure if acknowledging the Novartis-originated patches
in the log message like this is the best practice and we will understand
if the maintainers will decide to strip these notices when applying the
patches. Usually, this kind of acknowledgement is made by using
"sponsored" email addresses, however mine will probably stop working
shortly after I leave and the only way to read it is, shall we say,
utmostly inconvenient. ;-) Now, Shawn has proposed 'Sponsored-by:' line
at the header footer, which is also an interesting possibility.
--
Petr "Pasky" Baudis
People who take cold baths never have rheumatism, but they have
cold baths.
^ permalink raw reply
* Re: [StGit] kha/{safe,experimental} updated
From: Catalin Marinas @ 2008-09-24 22:48 UTC (permalink / raw)
To: Karl Hasselström; +Cc: git, David Kågedal, Daniel White
In-Reply-To: <20080921153757.GA9098@diana.vm.bytemark.co.uk>
2008/9/21 Karl Hasselström <kha@treskal.com>:
> Just pushed out the stack log stuff to kha/safe. It really should be
> ready for wider use at this point, and it was getting tiresome to keep
> rebasing it.
Great work, I merged (most of) it. Many thanks.
> One patch is still in experimental -- it depends on a new git feature
> that isn't in any release yet.
[...]
> Read several objects at once with git cat-file --batch
I skipped this one for now. I'm using Ubuntu (Hardy) and the git
version is 1.5.4.3. I would wait until we get at least a stable git
release with this feature.
I haven't looked in detail but can we have a way to drop back to the
old implementation if the option isn't available?
--
Catalin
^ permalink raw reply
* Re: [PATCH v2] maint: check return of split_cmdline to avoid bad config strings
From: Miklos Vajna @ 2008-09-24 22:32 UTC (permalink / raw)
To: Deskin Miller; +Cc: git, gitster
In-Reply-To: <20080924145029.GA3052@riemann.deskinm.fdns.net>
[-- Attachment #1: Type: text/plain, Size: 521 bytes --]
On Wed, Sep 24, 2008 at 10:50:29AM -0400, Deskin Miller <deskinm@umich.edu> wrote:
> As the testcase demonstrates, it's possible for split_cmdline to return -1 and
> deallocate any memory it's allocated, if the config string is missing an end
> quote. In both the cases below, which are the only calling sites, the return
> isn't checked, and using the pointer causes a pretty immediate segfault.
>
> Signed-off-by: Deskin Miller <deskinm@umich.edu>
Acked-by: Miklos Vajna <vmiklos@frugalware.org>
Thanks.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply
* Re: [PATCH 3/5] git-gui: Squash populate_{push,fetch}_menu to populate_remotes_menu
From: Petr Baudis @ 2008-09-24 22:23 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924221732.257739465@suse.cz>
On Thu, Sep 25, 2008 at 12:12:52AM +0200, pasky@suse.cz wrote:
> The meat of the routines is now separated to add_fetch_entry() and
> add_push_entry(). This refactoring will allow easy implementation of adding
> individual remotes later.
>
> This patch has been sponsored by Novartis.
>
> Signed-off-by: Petr Baudis <pasky@suse.cz>
Sorry, this patch slipped through from another series ;-) - please
disregard.
Also, the PATCH 4/5 has slight dependency on the git-gui remotes series,
but the change to git-gui/lib/remote_add.tcl can just be trimmed if this
would be to go in earlier.
--
Petr "Pasky" Baudis
People who take cold baths never have rheumatism, but they have
cold baths.
^ permalink raw reply
* [PATCH 5/5] git-gui: Support for user-provided locator templates
From: pasky @ 2008-09-24 22:12 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924221249.037449176@suse.cz>
[-- Attachment #1: t/git-gui/locators.diff --]
[-- Type: text/plain, Size: 6681 bytes --]
Users can now configure their own 'locator' templates, which they
can use to easen entering of common URLs; in all location inputs,
they can choose from the defined locators (and raw URL entry) and
their input is then substituted to the locator template.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
Documentation/config.txt | 25 ++++++++++++++++
git-gui/lib/choose_repository.tcl | 7 ++++-
git-gui/lib/remote_add.tcl | 2 +-
git-gui/lib/remote_branch_delete.tcl | 2 +-
git-gui/lib/transport.tcl | 52 +++++++++++++++++++++++++++++++--
5 files changed, 81 insertions(+), 7 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index bea867d..f3e82c6 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -788,6 +788,21 @@ gui.pruneduringfetch::
"true" if linkgit:git-gui[1] should prune tracking branches when
performing a fetch. The default value is "false".
+gui.pulllocator::
+ Specifies the locator pre-selected for cloning and pulling
+ in case any locator templates (see 'locator.*.template')
+ are available. Set to 'URL' to default to the URL entry.
+
+gui.pushlocator::
+ Specifies the locator pre-selected for pushing
+ in case any locator templates (see 'locator.*.template')
+ are available. Set to 'URL' to default to the URL entry.
+
+gui.remotelocator::
+ Specifies the locator pre-selected when adding remotes
+ in case any locator templates (see 'locator.*.template')
+ are available. Set to 'URL' to default to the URL entry.
+
gui.trustmtime::
Determines if linkgit:git-gui[1] should trust the file modification
timestamp or not. By default the timestamps are not trusted.
@@ -891,6 +906,16 @@ instaweb.port::
The port number to bind the gitweb httpd to. See
linkgit:git-instaweb[1].
+locator.<name>.template::
+ Normally, you specify repository locations e.g. when cloning
+ or adding remotes by some kind of full-fledged URL-ish specifier.
+ This option lets you specify templates for the most common locations
+ so that you do not have to type out the full URLs all the time;
+ '%s' in the template is substituted by user input. Thus, for example
+ 'locator.ror.template = "git://git.kernel.org/%s"' would let you
+ easily refer to kernel.org projects. Currently, the user-defined
+ locators are supported only by linkgit:git-gui[1].
+
log.date::
Set default date-time mode for the log command. Setting log.date
value is similar to using 'git-log'\'s --date option. The value is one of the
diff --git a/git-gui/lib/choose_repository.tcl b/git-gui/lib/choose_repository.tcl
index 1c951ae..e05d3a9 100644
--- a/git-gui/lib/choose_repository.tcl
+++ b/git-gui/lib/choose_repository.tcl
@@ -465,7 +465,7 @@ method _do_clone {} {
pack $args -fill both
label $args.origin_l -text [mc "Source Location:"]
- location_input $args.origin_t @origin_url
+ location_input $args.origin_t @origin_url pull
button $args.origin_b \
-text [mc "Browse"] \
-command [cb _open_origin]
@@ -541,6 +541,11 @@ method _open_origin {} {
return
}
set origin_url $p
+
+ # Fix up locators in case we use them
+ global _locator_template _locator_input
+ set _locator_template URL
+ set _locator_input $p
}
method _update_clone {args} {
diff --git a/git-gui/lib/remote_add.tcl b/git-gui/lib/remote_add.tcl
index b4a9ede..dec9dcb 100644
--- a/git-gui/lib/remote_add.tcl
+++ b/git-gui/lib/remote_add.tcl
@@ -49,7 +49,7 @@ constructor dialog {} {
label $w.desc.loc_l -text [mc "Location:"]
set w_loc $w.desc.loc_t
- location_input $w_loc @location
+ location_input $w_loc @location remote
grid $w.desc.loc_l $w_loc -sticky we -padx {0 5}
grid columnconfigure $w.desc 1 -weight 1
diff --git a/git-gui/lib/remote_branch_delete.tcl b/git-gui/lib/remote_branch_delete.tcl
index 14a4c15..5cdab49 100644
--- a/git-gui/lib/remote_branch_delete.tcl
+++ b/git-gui/lib/remote_branch_delete.tcl
@@ -66,7 +66,7 @@ constructor dialog {} {
-text [mc "Arbitrary Location:"] \
-value url \
-variable @urltype
- location_input $w.dest.url_t @url
+ location_input $w.dest.url_t @url push
trace add variable @url write [cb _write_url]
grid $w.dest.url_r $w.dest.url_t -sticky we -padx {0 5}
grid columnconfigure $w.dest 1 -weight 1
diff --git a/git-gui/lib/transport.tcl b/git-gui/lib/transport.tcl
index b8ceebe..277e6b8 100644
--- a/git-gui/lib/transport.tcl
+++ b/git-gui/lib/transport.tcl
@@ -30,19 +30,63 @@ proc push_to {remote} {
console::exec $w $cmd
}
-proc location_input {widget urlvar} {
+proc locator_update {args} {
global repo_config
+ global _locator_template _locator_input _locator_var
+ regsub -all %s "$repo_config(locator.$_locator_template.template)" \
+ $_locator_input $_locator_var
+}
+
+proc location_input {widget urlvar op} {
+ global repo_config all_locators
+ set all_locators [list]
+
+ set repo_config(locator.URL.template) "%s"
+ foreach line [array names repo_config locator.*.template] {
+ if {![regexp ^locator\.(.*)\.template\$ $line line name]} continue
+ lappend all_locators $name
+ }
+
+ # 1 == just the default URL locator
+ if {[llength $all_locators] == 1} {
+ entry $widget \
+ -borderwidth 1 \
+ -relief sunken \
+ -width 50 \
+ -textvariable $urlvar \
+ -validate key \
+ -validatecommand {
+ if {%d == 1 && [regexp {\s} %S]} {return 0}
+ return 1
+ }
+ return 0
+ }
+
+ if {[catch {set default_locator $repo_config(gui.${op}locator)}]} {
+ set default_locator [lindex $all_locators 0]
+ }
+
+ global _locator_template _locator_input _locator_var
+ trace remove variable _locator_input write locator_update
+ set _locator_template $default_locator
+ set _locator_input {}
+ set _locator_var $urlvar
+ trace add variable _locator_input write locator_update
- entry $widget \
+ frame $widget
+ eval tk_optionMenu $widget.l _locator_template $all_locators
+ entry $widget.s \
-borderwidth 1 \
-relief sunken \
-width 50 \
- -textvariable $urlvar \
+ -textvariable _locator_input \
-validate key \
-validatecommand {
if {%d == 1 && [regexp {\s} %S]} {return 0}
return 1
}
+ pack $widget.l -side left
+ pack $widget.s -side right -fill x
}
proc start_push_anywhere_action {w} {
@@ -164,7 +208,7 @@ proc do_push_anywhere {} {
-text [mc "Arbitrary Location:"] \
-value url \
-variable push_urltype
- location_input $w.dest.url_t push_url
+ location_input $w.dest.url_t push_url push
trace add variable push_url write push_anywhere_urltype
grid $w.dest.url_r $w.dest.url_t -sticky we -padx {0 5}
grid columnconfigure $w.dest 1 -weight 1
--
tg: (d617ccd..) t/git-gui/locators (depends on: t/git-gui/ldialogs-refactor)
^ permalink raw reply related
* [PATCH 4/5] git-gui: Factor out URL inputbox construction to location_input
From: pasky @ 2008-09-24 22:12 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924221249.037449176@suse.cz>
[-- Attachment #1: t/git-gui/ldialogs-refactor.diff --]
[-- Type: text/plain, Size: 4566 bytes --]
This will make it easier to introduce custom locators.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/lib/choose_repository.tcl | 6 +---
git-gui/lib/remote_add.tcl | 6 +---
git-gui/lib/remote_branch_delete.tcl | 11 +-------
git-gui/lib/transport.tcl | 46 ++++++++++++++++++++-------------
4 files changed, 31 insertions(+), 38 deletions(-)
diff --git a/git-gui/lib/choose_repository.tcl b/git-gui/lib/choose_repository.tcl
index 9091316..1c951ae 100644
--- a/git-gui/lib/choose_repository.tcl
+++ b/git-gui/lib/choose_repository.tcl
@@ -465,11 +465,7 @@ method _do_clone {} {
pack $args -fill both
label $args.origin_l -text [mc "Source Location:"]
- entry $args.origin_t \
- -textvariable @origin_url \
- -borderwidth 1 \
- -relief sunken \
- -width 50
+ location_input $args.origin_t @origin_url
button $args.origin_b \
-text [mc "Browse"] \
-command [cb _open_origin]
diff --git a/git-gui/lib/remote_add.tcl b/git-gui/lib/remote_add.tcl
index 89e88ee..b4a9ede 100644
--- a/git-gui/lib/remote_add.tcl
+++ b/git-gui/lib/remote_add.tcl
@@ -49,11 +49,7 @@ constructor dialog {} {
label $w.desc.loc_l -text [mc "Location:"]
set w_loc $w.desc.loc_t
- entry $w_loc \
- -borderwidth 1 \
- -relief sunken \
- -width 40 \
- -textvariable @location
+ location_input $w_loc @location
grid $w.desc.loc_l $w_loc -sticky we -padx {0 5}
grid columnconfigure $w.desc 1 -weight 1
diff --git a/git-gui/lib/remote_branch_delete.tcl b/git-gui/lib/remote_branch_delete.tcl
index a09b9ad..14a4c15 100644
--- a/git-gui/lib/remote_branch_delete.tcl
+++ b/git-gui/lib/remote_branch_delete.tcl
@@ -66,16 +66,7 @@ constructor dialog {} {
-text [mc "Arbitrary Location:"] \
-value url \
-variable @urltype
- entry $w.dest.url_t \
- -borderwidth 1 \
- -relief sunken \
- -width 50 \
- -textvariable @url \
- -validate key \
- -validatecommand {
- if {%d == 1 && [regexp {\s} %S]} {return 0}
- return 1
- }
+ location_input $w.dest.url_t @url
trace add variable @url write [cb _write_url]
grid $w.dest.url_r $w.dest.url_t -sticky we -padx {0 5}
grid columnconfigure $w.dest 1 -weight 1
diff --git a/git-gui/lib/transport.tcl b/git-gui/lib/transport.tcl
index e419d78..b8ceebe 100644
--- a/git-gui/lib/transport.tcl
+++ b/git-gui/lib/transport.tcl
@@ -30,6 +30,21 @@ proc push_to {remote} {
console::exec $w $cmd
}
+proc location_input {widget urlvar} {
+ global repo_config
+
+ entry $widget \
+ -borderwidth 1 \
+ -relief sunken \
+ -width 50 \
+ -textvariable $urlvar \
+ -validate key \
+ -validatecommand {
+ if {%d == 1 && [regexp {\s} %S]} {return 0}
+ return 1
+ }
+}
+
proc start_push_anywhere_action {w} {
global push_urltype push_remote push_url push_thin push_tags
global push_force
@@ -77,11 +92,22 @@ proc start_push_anywhere_action {w} {
trace add variable push_remote write \
[list radio_selector push_urltype remote]
+proc push_anywhere_urltype {args} {
+ global push_urltype
+ set push_urltype url
+ warn_popup "blablabla"
+}
+
proc do_push_anywhere {} {
global all_remotes current_branch
global push_urltype push_remote push_url push_thin push_tags
global push_force
+ set push_url {}
+ set push_force 0
+ set push_thin 0
+ set push_tags 0
+
set w .push_setup
toplevel $w
wm geometry $w "+[winfo rootx .]+[winfo rooty .]"
@@ -138,19 +164,8 @@ proc do_push_anywhere {} {
-text [mc "Arbitrary Location:"] \
-value url \
-variable push_urltype
- entry $w.dest.url_t \
- -borderwidth 1 \
- -relief sunken \
- -width 50 \
- -textvariable push_url \
- -validate key \
- -validatecommand {
- if {%d == 1 && [regexp {\s} %S]} {return 0}
- if {%d == 1 && [string length %S] > 0} {
- set push_urltype url
- }
- return 1
- }
+ location_input $w.dest.url_t push_url
+ trace add variable push_url write push_anywhere_urltype
grid $w.dest.url_r $w.dest.url_t -sticky we -padx {0 5}
grid columnconfigure $w.dest 1 -weight 1
pack $w.dest -anchor nw -fill x -pady 5 -padx 5
@@ -171,11 +186,6 @@ proc do_push_anywhere {} {
grid columnconfigure $w.options 1 -weight 1
pack $w.options -anchor nw -fill x -pady 5 -padx 5
- set push_url {}
- set push_force 0
- set push_thin 0
- set push_tags 0
-
bind $w <Visibility> "grab $w; focus $w.buttons.create"
bind $w <Key-Escape> "destroy $w"
bind $w <Key-Return> [list start_push_anywhere_action $w]
--
tg: (4e2c8cc..) t/git-gui/ldialogs-refactor (depends on: t/git-gui/ldialogs-consistent t/git-gui/remote-add)
^ permalink raw reply related
* [PATCH 3/5] git-gui: Squash populate_{push,fetch}_menu to populate_remotes_menu
From: pasky @ 2008-09-24 22:12 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924221249.037449176@suse.cz>
[-- Attachment #1: t/git-gui/populate-refactor.diff --]
[-- Type: text/plain, Size: 4505 bytes --]
The meat of the routines is now separated to add_fetch_entry() and
add_push_entry(). This refactoring will allow easy implementation of adding
individual remotes later.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/git-gui.sh | 3 +-
git-gui/lib/remote.tcl | 137 ++++++++++++++++++++++++------------------------
2 files changed, 70 insertions(+), 70 deletions(-)
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 10d8a44..75bd460 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -3100,8 +3100,7 @@ if {[is_enabled transport]} {
load_all_remotes
set n [.mbar.remote index end]
- populate_push_menu
- populate_fetch_menu
+ populate_remotes_menu
set n [expr {[.mbar.remote index end] - $n}]
if {$n > 0} {
if {[.mbar.remote type 0] eq "tearoff"} { incr n }
diff --git a/git-gui/lib/remote.tcl b/git-gui/lib/remote.tcl
index 0e86dda..d97c851 100644
--- a/git-gui/lib/remote.tcl
+++ b/git-gui/lib/remote.tcl
@@ -132,91 +132,92 @@ proc load_all_remotes {} {
set all_remotes [lsort -unique $all_remotes]
}
-proc populate_fetch_menu {} {
- global all_remotes repo_config
-
+proc add_fetch_entry {r} {
+ global repo_config
set remote_m .mbar.remote
set fetch_m $remote_m.fetch
set prune_m $remote_m.prune
-
- foreach r $all_remotes {
- set enable 0
- if {![catch {set a $repo_config(remote.$r.url)}]} {
- if {![catch {set a $repo_config(remote.$r.fetch)}]} {
- set enable 1
- }
- } else {
- catch {
- set fd [open [gitdir remotes $r] r]
- while {[gets $fd n] >= 0} {
- if {[regexp {^Pull:[ \t]*([^:]+):} $n]} {
- set enable 1
- break
- }
+ set enable 0
+ if {![catch {set a $repo_config(remote.$r.url)}]} {
+ if {![catch {set a $repo_config(remote.$r.fetch)}]} {
+ set enable 1
+ }
+ } else {
+ catch {
+ set fd [open [gitdir remotes $r] r]
+ while {[gets $fd n] >= 0} {
+ if {[regexp {^Pull:[ \t]*([^:]+):} $n]} {
+ set enable 1
+ break
}
- close $fd
}
+ close $fd
}
+ }
- if {$enable} {
- if {![winfo exists $fetch_m]} {
- menu $prune_m
- $remote_m insert 0 cascade \
- -label [mc "Prune from"] \
- -menu $prune_m
-
- menu $fetch_m
- $remote_m insert 0 cascade \
- -label [mc "Fetch from"] \
- -menu $fetch_m
- }
-
- $fetch_m add command \
- -label $r \
- -command [list fetch_from $r]
- $prune_m add command \
- -label $r \
- -command [list prune_from $r]
+ if {$enable} {
+ if {![winfo exists $fetch_m]} {
+ menu $prune_m
+ $remote_m insert 0 cascade \
+ -label [mc "Prune from"] \
+ -menu $prune_m
+
+ menu $fetch_m
+ $remote_m insert 0 cascade \
+ -label [mc "Fetch from"] \
+ -menu $fetch_m
}
+
+ $fetch_m add command \
+ -label $r \
+ -command [list fetch_from $r]
+ $prune_m add command \
+ -label $r \
+ -command [list prune_from $r]
}
}
-proc populate_push_menu {} {
- global all_remotes repo_config
-
+proc add_push_entry {r} {
+ global repo_config
set remote_m .mbar.remote
set push_m $remote_m.push
-
- foreach r $all_remotes {
- set enable 0
- if {![catch {set a $repo_config(remote.$r.url)}]} {
- if {![catch {set a $repo_config(remote.$r.push)}]} {
- set enable 1
- }
- } else {
- catch {
- set fd [open [gitdir remotes $r] r]
- while {[gets $fd n] >= 0} {
- if {[regexp {^Push:[ \t]*([^:]+):} $n]} {
- set enable 1
- break
- }
+ set enable 0
+ if {![catch {set a $repo_config(remote.$r.url)}]} {
+ if {![catch {set a $repo_config(remote.$r.push)}]} {
+ set enable 1
+ }
+ } else {
+ catch {
+ set fd [open [gitdir remotes $r] r]
+ while {[gets $fd n] >= 0} {
+ if {[regexp {^Push:[ \t]*([^:]+):} $n]} {
+ set enable 1
+ break
}
- close $fd
}
+ close $fd
}
+ }
- if {$enable} {
- if {![winfo exists $push_m]} {
- menu $push_m
- $remote_m insert 0 cascade \
- -label [mc "Push to"] \
- -menu $push_m
- }
-
- $push_m add command \
- -label $r \
- -command [list push_to $r]
+ if {$enable} {
+ if {![winfo exists $push_m]} {
+ menu $push_m
+ $remote_m insert 0 cascade \
+ -label [mc "Push to"] \
+ -menu $push_m
}
+
+ $push_m add command \
+ -label $r \
+ -command [list push_to $r]
+ }
+}
+
+proc populate_remotes_menu {} {
+ global all_remotes
+
+ foreach r $all_remotes {
+ add_fetch_entry $r
+ add_push_entry $r
}
}
--
tg: (c427559..) t/git-gui/populate-refactor (depends on: vanilla/master)
^ permalink raw reply related
* [PATCH 2/5] git-gui: Make input boxes in init/clone/open dialogs consistent
From: pasky @ 2008-09-24 22:12 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924221249.037449176@suse.cz>
[-- Attachment #1: t/git-gui/ldialogs-consistent.diff --]
[-- Type: text/plain, Size: 1742 bytes --]
Before, the input boxes would not be sunken and would have larger border,
which is inconsistent with the rest of the inputboxes for repository
locations in the git-gui UI.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/lib/choose_repository.tcl | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/git-gui/lib/choose_repository.tcl b/git-gui/lib/choose_repository.tcl
index f54d88a..9091316 100644
--- a/git-gui/lib/choose_repository.tcl
+++ b/git-gui/lib/choose_repository.tcl
@@ -381,7 +381,8 @@ method _do_new {} {
label $w_body.where.l -text [mc "Directory:"]
entry $w_body.where.t \
-textvariable @local_path \
- -font font_diff \
+ -borderwidth 1 \
+ -relief sunken \
-width 50
button $w_body.where.b \
-text [mc "Browse"] \
@@ -466,7 +467,8 @@ method _do_clone {} {
label $args.origin_l -text [mc "Source Location:"]
entry $args.origin_t \
-textvariable @origin_url \
- -font font_diff \
+ -borderwidth 1 \
+ -relief sunken \
-width 50
button $args.origin_b \
-text [mc "Browse"] \
@@ -476,7 +478,8 @@ method _do_clone {} {
label $args.where_l -text [mc "Target Directory:"]
entry $args.where_t \
-textvariable @local_path \
- -font font_diff \
+ -borderwidth 1 \
+ -relief sunken \
-width 50
button $args.where_b \
-text [mc "Browse"] \
@@ -979,7 +982,8 @@ method _do_open {} {
label $w_body.where.l -text [mc "Repository:"]
entry $w_body.where.t \
-textvariable @local_path \
- -font font_diff \
+ -borderwidth 1 \
+ -relief sunken \
-width 50
button $w_body.where.b \
-text [mc "Browse"] \
--
tg: (cdbf2d1..) t/git-gui/ldialogs-consistent (depends on: t/git-gui/avoid-url)
^ permalink raw reply related
* [PATCH 1/5] git-gui: Avoid using the term URL when specifying repositories
From: pasky @ 2008-09-24 22:12 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924221249.037449176@suse.cz>
[-- Attachment #1: t/git-gui/avoid-url.diff --]
[-- Type: text/plain, Size: 2245 bytes --]
Instead, 'Location' is used to label such inputs; in the Clone dialog,
'Source' and 'Target' are also introduced to further clarify the situation.
The intent is to increase GUI consistency in the case location templates
(upcoming) are used - then, other locators than URL may be used.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/lib/choose_repository.tcl | 4 ++--
git-gui/lib/remote_branch_delete.tcl | 2 +-
git-gui/lib/transport.tcl | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/git-gui/lib/choose_repository.tcl b/git-gui/lib/choose_repository.tcl
index 3180786..f54d88a 100644
--- a/git-gui/lib/choose_repository.tcl
+++ b/git-gui/lib/choose_repository.tcl
@@ -463,7 +463,7 @@ method _do_clone {} {
frame $w_body.args
pack $args -fill both
- label $args.origin_l -text [mc "URL:"]
+ label $args.origin_l -text [mc "Source Location:"]
entry $args.origin_t \
-textvariable @origin_url \
-font font_diff \
@@ -473,7 +473,7 @@ method _do_clone {} {
-command [cb _open_origin]
grid $args.origin_l $args.origin_t $args.origin_b -sticky ew
- label $args.where_l -text [mc "Directory:"]
+ label $args.where_l -text [mc "Target Directory:"]
entry $args.where_t \
-textvariable @local_path \
-font font_diff \
diff --git a/git-gui/lib/remote_branch_delete.tcl b/git-gui/lib/remote_branch_delete.tcl
index c7b8148..a09b9ad 100644
--- a/git-gui/lib/remote_branch_delete.tcl
+++ b/git-gui/lib/remote_branch_delete.tcl
@@ -63,7 +63,7 @@ constructor dialog {} {
set urltype url
}
radiobutton $w.dest.url_r \
- -text [mc "Arbitrary URL:"] \
+ -text [mc "Arbitrary Location:"] \
-value url \
-variable @urltype
entry $w.dest.url_t \
diff --git a/git-gui/lib/transport.tcl b/git-gui/lib/transport.tcl
index 8e6a9d0..e419d78 100644
--- a/git-gui/lib/transport.tcl
+++ b/git-gui/lib/transport.tcl
@@ -135,7 +135,7 @@ proc do_push_anywhere {} {
set push_urltype url
}
radiobutton $w.dest.url_r \
- -text [mc "Arbitrary URL:"] \
+ -text [mc "Arbitrary Location:"] \
-value url \
-variable push_urltype
entry $w.dest.url_t \
--
tg: (c427559..) t/git-gui/avoid-url (depends on: vanilla/master)
^ permalink raw reply related
* [PATCH 0/5] git-gui: Support for "Locators" - address templates
From: pasky @ 2008-09-24 22:12 UTC (permalink / raw)
To: git; +Cc: spearce
This patch allows "locators" to be configured and used in the GUI,
basically as URL templates the input string is subsituted into.
The default operation of git-gui is not much affected (only some
labels change to be less confusing).
This is aimed mainly at corporate Git deployments - the integrator
might want to configure the central corporate repository store as
the default locator so that people do not need to type the same
URL over and over but can instead just type the repository name
on the server. Or avid repo.or.cz users might set up a 'repo'
locator pointing at 'git://repo.or.cz/%s'.
In practice, this seems to be a more significant usability improvement
than it might seem. Less technical users appear to be less daunted
to type in just the project name instead of dealing with long URLs.
^ permalink raw reply
* [PATCH] git-gui: gui.autoexplore makes explorer to pop up automatically after picking
From: Petr Baudis @ 2008-09-24 22:07 UTC (permalink / raw)
To: git, git; +Cc: spearce
Especially for Windows users used to work with the Windows Explorer,
it is very useful when after picking a repository (either opening
a local one or initializing/cloning a new one) in the "intro" window,
the explorer view of the working copy pops up along the standard
Git GUI window, so that the users can, well, actually work with
the repository.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
Documentation/config.txt | 4 ++++
git-gui/git-gui.sh | 6 ++++++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index bea867d..4f53584 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -767,6 +767,10 @@ All gitcvs variables except for 'gitcvs.usecrlfattr' and
is one of "ext" and "pserver") to make them apply only for the given
access method.
+gui.autoexplore::
+ Whether to automatically open explorer window when a repository
+ is picked within linkgit:git-gui[1]. The default value is "false".
+
gui.commitmsgwidth::
Defines how wide the commit message window is in the
linkgit:git-gui[1]. "75" is the default.
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index a64d34d..668aa49 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -959,6 +959,7 @@ citool {
##
## repository setup
+set picked 0
if {[catch {
set _gitdir $env(GIT_DIR)
set _prefix {}
@@ -970,6 +971,7 @@ if {[catch {
load_config 1
apply_config
choose_repository::pick
+ set picked 1
}
if {![file isdirectory $_gitdir] && [is_Cygwin]} {
catch {set _gitdir [exec cygpath --windows $_gitdir]}
@@ -3213,3 +3215,7 @@ after 1 do_rescan
if {[is_enabled multicommit]} {
after 1000 hint_gc
}
+
+if {$picked && [is_config_true gui.autoexplore]} {
+ do_explore
+}
--
tg: (be2e370..) t/git-gui/autoexplore (depends on: t/git-gui/explore)
^ permalink raw reply related
* [PATCH] git-gui: Add Explore Working Copy to the Repository menu
From: Petr Baudis @ 2008-09-24 22:05 UTC (permalink / raw)
To: git, git; +Cc: spearce
Especially when cloning is finished, the Git GUI window pops up,
but there is not really much one can do within it - there needs to be
a way to easily start exploring and working with the new working copy
using the standard system interface: explorer.exe on Windows, open on
MacOS/X and xdg-open as a fallback (all modern Linux desktops).
This might be also a post-clone option instead (possibly opening the window
automagically) but I believe that this might be useful also in other
situations, e.g. you don't have to keep the working copy window around
if you work in multiple repositories.
This operation will not make sense on bare repositories.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/git-gui.sh | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 10d8a44..a64d34d 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -1750,6 +1750,19 @@ proc do_gitk {revs} {
}
}
+proc do_explore {} {
+ set explorer {}
+ if {[is_Cygwin] || [is_Windows]} {
+ set explorer "explorer.exe"
+ } elseif {[is_MacOSX]} {
+ set explorer "open"
+ } else {
+ # freedesktop.org-conforming system is our best shot
+ set explorer "xdg-open"
+ }
+ eval exec $explorer [file dirname [gitdir]] &
+}
+
set is_quitting 0
proc do_quit {} {
@@ -2089,6 +2102,11 @@ if {[is_enabled transport]} {
menu .mbar.repository
.mbar.repository add command \
+ -label [mc "Explore Working Copy"] \
+ -command {do_explore}
+.mbar.repository add separator
+
+.mbar.repository add command \
-label [mc "Browse Current Branch's Files"] \
-command {browser::new $current_branch}
set ui_browse_current [.mbar.repository index last]
--
tg: (c427559..) t/git-gui/explore (depends on: vanilla/master)
^ permalink raw reply related
* [EGIT PATCH 2/3] Add create support to the branch command
From: Robin Rosenberg @ 2008-09-24 21:56 UTC (permalink / raw)
To: spearce; +Cc: git, Robin Rosenberg
In-Reply-To: <1222293383-26016-1-git-send-email-robin.rosenberg@dewire.com>
The help string hinted it could create branches, but it was not implemented.
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
.../src/org/spearce/jgit/pgm/Branch.java | 38 ++++++++++++++++++--
1 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Branch.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Branch.java
index a266244..db0aab8 100644
--- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Branch.java
+++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Branch.java
@@ -45,13 +45,16 @@
import java.util.Map.Entry;
import org.kohsuke.args4j.Argument;
+import org.kohsuke.args4j.ExampleMode;
import org.kohsuke.args4j.Option;
import org.spearce.jgit.lib.Constants;
import org.spearce.jgit.lib.ObjectId;
import org.spearce.jgit.lib.Ref;
import org.spearce.jgit.lib.RefComparator;
import org.spearce.jgit.lib.RefUpdate;
+import org.spearce.jgit.lib.Repository;
import org.spearce.jgit.lib.RefUpdate.Result;
+import org.spearce.jgit.pgm.opt.CmdLineParser;
import org.spearce.jgit.revwalk.RevWalk;
@Command(common = true, usage = "List, create, or delete branches")
@@ -69,6 +72,9 @@
@Option(name = "--delete-force", aliases = { "-D" }, usage = "delete branch (even if not merged)")
private boolean deleteForce = false;
+ @Option(name = "--create-force", aliases = { "-f" }, usage = "force create branch even exists")
+ private boolean createForce = false;
+
@Option(name = "--verbose", aliases = { "-v" }, usage = "be verbose")
private boolean verbose = false;
@@ -87,9 +93,35 @@ protected void run() throws Exception {
if (delete || deleteForce)
delete(deleteForce);
else {
- if (verbose)
- rw = new RevWalk(db);
- list();
+ if (branches.size() > 2)
+ throw die("Too many refs given\n" + new CmdLineParser(this).printExample(ExampleMode.ALL));
+
+ if (branches.size() > 0) {
+ String newHead = branches.get(0);
+ ObjectId startAt;
+ if (branches.size() == 2)
+ startAt = db.resolve(branches.get(1) + "^0");
+ else
+ startAt = db.resolve(Constants.HEAD + "^0");
+
+ String newRefName = newHead;
+ if (!newRefName.startsWith(Constants.R_HEADS))
+ newRefName = Constants.R_HEADS + newRefName;
+ if (!Repository.isValidRefName(newRefName))
+ throw die(String.format("%s is not a valid ref name", newRefName));
+ if (!createForce && db.resolve(newRefName) != null)
+ throw die(String.format("branch %s already exists", newHead));
+ RefUpdate updateRef = db.updateRef(newRefName);
+ updateRef.setNewObjectId(startAt);
+ updateRef.setForceUpdate(createForce);
+ Result update = updateRef.update();
+ if (update == Result.REJECTED)
+ throw die(String.format("Could not create branch %s: %s", newHead, update.toString()));
+ } else {
+ if (verbose)
+ rw = new RevWalk(db);
+ list();
+ }
}
}
--
1.6.0.1.310.gf789d0.dirty
^ permalink raw reply related
* [EGIT PATCH 3/3] Tell the branch dialog how to create a new branch.
From: Robin Rosenberg @ 2008-09-24 21:56 UTC (permalink / raw)
To: spearce; +Cc: git, Robin Rosenberg
In-Reply-To: <1222293383-26016-2-git-send-email-robin.rosenberg@dewire.com>
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
.../ui/internal/dialogs/BranchSelectionDialog.java | 98 ++++++++++++++++++--
1 files changed, 88 insertions(+), 10 deletions(-)
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/BranchSelectionDialog.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/BranchSelectionDialog.java
index 158738c..26d423a 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/BranchSelectionDialog.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/BranchSelectionDialog.java
@@ -17,14 +17,21 @@
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
@@ -35,6 +42,10 @@
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.spearce.egit.core.op.ResetOperation.ResetType;
+import org.spearce.egit.ui.Activator;
+import org.spearce.jgit.lib.Constants;
+import org.spearce.jgit.lib.ObjectId;
+import org.spearce.jgit.lib.RefUpdate;
import org.spearce.jgit.lib.Repository;
/**
@@ -81,9 +92,9 @@ protected Composite createDialogArea(Composite base) {
}
try {
- fillTreeWithBranches();
+ fillTreeWithBranches(null);
} catch (IOException e) {
- e.printStackTrace();
+ Activator.logError("Could not refresh list of branches", e);
}
return parent;
@@ -121,7 +132,7 @@ public void handleEvent(Event event) {
});
}
- private void fillTreeWithBranches() throws IOException {
+ private void fillTreeWithBranches(String select) throws IOException {
String branch = repo.getFullBranch();
List<String> branches = new ArrayList<String>(repo.getAllRefs()
.keySet());
@@ -197,6 +208,8 @@ public void widgetDisposed(DisposeEvent e) {
branchTree.showItem(item);
}
else item.setText(shortName);
+ if (ref.equals(select))
+ branchTree.select(item);
}
}
@@ -220,12 +233,7 @@ public ResetType getResetType() {
@Override
protected void okPressed() {
- TreeItem[] selection = branchTree.getSelection();
- refName = null;
- if (selection != null && selection.length > 0) {
- TreeItem item = selection[0];
- refName = (String) item.getData();
- }
+ refNameFromDialog();
if (refName == null) {
MessageDialog.openWarning(getShell(), "No branch/tag selected", "You must select a valid ref.");
return;
@@ -244,9 +252,79 @@ protected void okPressed() {
super.okPressed();
}
+ private void refNameFromDialog() {
+ TreeItem[] selection = branchTree.getSelection();
+ refName = null;
+ if (selection != null && selection.length > 0) {
+ TreeItem item = selection[0];
+ refName = (String) item.getData();
+ }
+ }
+
@Override
protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+ if (!showResetType) {
+ Button newButton = new Button(parent, SWT.PUSH);
+ newButton.setFont(JFaceResources.getDialogFont());
+ newButton.setText("New branch");
+ ((GridLayout)parent.getLayout()).numColumns++;
+ newButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ // check what ref name the user selected, if any.
+ refNameFromDialog();
+
+ InputDialog labelDialog = new InputDialog(
+ getShell(),
+ "New branch",
+ "Enter name of new branch. It will branch from the selected branch. refs/heads/ will be prepended to the name you type",
+ null, new IInputValidator() {
+ public String isValid(String newText) {
+ String testFor = Constants.R_HEADS + newText;
+ try {
+ if (repo.resolve(testFor) != null)
+ return "Already exists";
+ } catch (IOException e1) {
+ Activator.logError(String.format(
+ "Could not attempt to resolve %s", testFor), e1);
+ }
+ if (!Repository.isValidRefName(testFor))
+ return "Invalid ref name";
+ return null;
+ }
+ });
+ labelDialog.setBlockOnOpen(true);
+ if (labelDialog.open() == Window.OK) {
+ String newRefName = Constants.R_HEADS + labelDialog.getValue();
+ RefUpdate updateRef;
+ try {
+ updateRef = repo.updateRef(newRefName);
+ ObjectId startAt;
+ if (refName == null)
+ startAt = repo.resolve(Constants.HEAD);
+ else
+ startAt = repo.resolve(refName);
+ updateRef.setNewObjectId(startAt);
+ updateRef.update();
+ } catch (IOException e1) {
+ Activator.logError(String.format(
+ "Could not create new ref %s", newRefName), e1);
+ }
+ try {
+ branchTree.removeAll();
+ fillTreeWithBranches(newRefName);
+ } catch (IOException e1) {
+ Activator.logError("Could not refresh list of branches",e1);
+ }
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ });
+ }
+ createButton(parent, IDialogConstants.OK_ID, showResetType ? "Reset" : "Checkout", true);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}
--
1.6.0.1.310.gf789d0.dirty
^ permalink raw reply related
* [EGIT PATCH 1/3] Include a print command line usage string utility
From: Robin Rosenberg @ 2008-09-24 21:56 UTC (permalink / raw)
To: spearce; +Cc: git, Robin Rosenberg
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
.../src/org/spearce/jgit/pgm/TextBuiltin.java | 40 +++++++++++++++-----
1 files changed, 30 insertions(+), 10 deletions(-)
diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/TextBuiltin.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/TextBuiltin.java
index 0746eb3..d0fe4af 100644
--- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/TextBuiltin.java
+++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/TextBuiltin.java
@@ -127,22 +127,42 @@ protected void parseArguments(final String[] args) {
}
if (help) {
- System.err.print("jgit ");
- System.err.print(commandName);
- clp.printSingleLineUsage(System.err);
- System.err.println();
-
- System.err.println();
- clp.printUsage(System.err);
- System.err.println();
-
- System.exit(1);
+ printUsageAndExit(clp);
}
argWalk = clp.getRevWalkGently();
}
/**
+ * Print the usage line
+ *
+ * @param clp
+ */
+ public void printUsageAndExit(final CmdLineParser clp) {
+ printUsageAndExit("", clp);
+ }
+
+ /**
+ * Print an error message and the usage line
+ *
+ * @param message
+ * @param clp
+ */
+ public void printUsageAndExit(final String message, final CmdLineParser clp) {
+ System.err.println(message);
+ System.err.print("jgit ");
+ System.err.print(commandName);
+ clp.printSingleLineUsage(System.err);
+ System.err.println();
+
+ System.err.println();
+ clp.printUsage(System.err);
+ System.err.println();
+
+ System.exit(1);
+ }
+
+ /**
* Perform the actions of this command.
* <p>
* This method should only be invoked by {@link #execute(String[])}.
--
1.6.0.1.310.gf789d0.dirty
^ permalink raw reply related
* [PATCH] git-gui: Use git web--browser for web browsing
From: Petr Baudis @ 2008-09-24 21:57 UTC (permalink / raw)
To: git, git; +Cc: spearce
This patch removes git-gui specific webbrowser guessing and instead
relies on git web--browser to do the right thing, removing unnecessary
code duplication. New function start_browser encapsulates the browser
execution, for usage from other parts of code. This will also make
git-gui show the documentation menu item even in cases it might not
be able to start up a browser, these cases should be however only
very rare.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/git-gui.sh | 30 +++++++-----------------------
1 files changed, 7 insertions(+), 23 deletions(-)
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 10d8a44..fc67eb8 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -2345,8 +2345,7 @@ if {![is_MacOSX]} {
-command do_about
}
-set browser {}
-catch {set browser $repo_config(instaweb.browser)}
+
set doc_path [file dirname [gitexec]]
set doc_path [file join $doc_path Documentation index.html]
@@ -2354,34 +2353,19 @@ if {[is_Cygwin]} {
set doc_path [exec cygpath --mixed $doc_path]
}
-if {$browser eq {}} {
- if {[is_MacOSX]} {
- set browser open
- } elseif {[is_Cygwin]} {
- set program_files [file dirname [exec cygpath --windir]]
- set program_files [file join $program_files {Program Files}]
- set firefox [file join $program_files {Mozilla Firefox} firefox.exe]
- set ie [file join $program_files {Internet Explorer} IEXPLORE.EXE]
- if {[file exists $firefox]} {
- set browser $firefox
- } elseif {[file exists $ie]} {
- set browser $ie
- }
- unset program_files firefox ie
- }
-}
-
if {[file isfile $doc_path]} {
set doc_url "file:$doc_path"
} else {
set doc_url {http://www.kernel.org/pub/software/scm/git/docs/}
}
-if {$browser ne {}} {
- .mbar.help add command -label [mc "Online Documentation"] \
- -command [list exec $browser $doc_url &]
+proc start_browser {url} {
+ git "web--browse" $url
}
-unset browser doc_path doc_url
+
+.mbar.help add command -label [mc "Online Documentation"] \
+ -command [list start_browser $doc_url]
+unset doc_path doc_url
# -- Standard bindings
#
--
tg: (c427559..) t/git-gui/web-browse (depends on: vanilla/master)
^ permalink raw reply related
* [PATCH] git-web--browse: Support for using /bin/start on MinGW
From: Petr Baudis @ 2008-09-24 21:52 UTC (permalink / raw)
To: git, git
In the future, I think we should also default to xdg-open on Linux instead
of having a KDE-specific hack.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
Documentation/git-web--browse.txt | 1 +
git-web--browse.sh | 8 ++++++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-web--browse.txt b/Documentation/git-web--browse.txt
index 7f7a45b..278cf73 100644
--- a/Documentation/git-web--browse.txt
+++ b/Documentation/git-web--browse.txt
@@ -26,6 +26,7 @@ The following browsers (or commands) are currently supported:
* lynx
* dillo
* open (this is the default under Mac OS X GUI)
+* start (this is the default under MinGW)
Custom commands may also be specified.
diff --git a/git-web--browse.sh b/git-web--browse.sh
index 384148a..78d236b 100755
--- a/git-web--browse.sh
+++ b/git-web--browse.sh
@@ -31,7 +31,7 @@ valid_custom_tool()
valid_tool() {
case "$1" in
- firefox | iceweasel | konqueror | w3m | links | lynx | dillo | open)
+ firefox | iceweasel | konqueror | w3m | links | lynx | dillo | open | start)
;; # happy
*)
valid_custom_tool "$1" || return 1
@@ -114,6 +114,10 @@ if test -z "$browser" ; then
if test -n "$SECURITYSESSIONID"; then
browser_candidates="open $browser_candidates"
fi
+ # /bin/start indicates MinGW
+ if test -n /bin/start; then
+ browser_candidates="start $browser_candidates"
+ fi
for i in $browser_candidates; do
init_browser_path $i
@@ -157,7 +161,7 @@ case "$browser" in
;;
esac
;;
- w3m|links|lynx|open)
+ w3m|links|lynx|open|start)
eval "$browser_path" "$@"
;;
dillo)
--
tg: (c427559..) t/web--browse/mingw (depends on: vanilla/master)
^ permalink raw reply related
* [PATCH 4/5] git-gui: Add support for removing remotes
From: pasky @ 2008-09-24 20:44 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924204358.144077183@suse.cz>
[-- Attachment #1: t/git-gui/remote-rm.diff --]
[-- Type: text/plain, Size: 2173 bytes --]
We introduce new submenu Remote -> Remove Remote, allowing to remove
remotes. In the future, we might consider a confirmation popup to avoid
misclicks, but removing a remote is not very lossy operation.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/lib/remote.tcl | 37 +++++++++++++++++++++++++++++++++++++
1 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/git-gui/lib/remote.tcl b/git-gui/lib/remote.tcl
index 643f0bc..1852247 100644
--- a/git-gui/lib/remote.tcl
+++ b/git-gui/lib/remote.tcl
@@ -137,6 +137,7 @@ proc add_fetch_entry {r} {
set remote_m .mbar.remote
set fetch_m $remote_m.fetch
set prune_m $remote_m.prune
+ set remove_m $remote_m.remove
set enable 0
if {![catch {set a $repo_config(remote.$r.url)}]} {
if {![catch {set a $repo_config(remote.$r.fetch)}]} {
@@ -157,6 +158,11 @@ proc add_fetch_entry {r} {
if {$enable} {
if {![winfo exists $fetch_m]} {
+ menu $remove_m
+ $remote_m insert 0 cascade \
+ -label [mc "Remove Remote"] \
+ -menu $remove_m
+
menu $prune_m
$remote_m insert 0 cascade \
-label [mc "Prune from"] \
@@ -174,6 +180,9 @@ proc add_fetch_entry {r} {
$prune_m add command \
-label $r \
-command [list prune_from $r]
+ $remove_m add command \
+ -label $r \
+ -command [list remove_remote $r]
}
}
@@ -236,3 +245,31 @@ proc add_single_remote {name location} {
add_fetch_entry $name
add_push_entry $name
}
+
+proc delete_from_menu {menu name} {
+ if {[winfo exists $menu]} {
+ $menu delete $name
+ }
+}
+
+proc remove_remote {name} {
+ global all_remotes repo_config
+
+ git remote rm $name
+
+ catch {
+ # Missing values are ok
+ unset repo_config(remote.$name.url)
+ unset repo_config(remote.$name.fetch)
+ unset repo_config(remote.$name.push)
+ }
+
+ set i [lsearch -exact all_remotes $name]
+ lreplace all_remotes $i $i
+
+ set remote_m .mbar.remote
+ delete_from_menu $remote_m.fetch $name
+ delete_from_menu $remote_m.prune $name
+ delete_from_menu $remote_m.remove $name
+ delete_from_menu $remote_m.push $name
+}
--
tg: (f30d624..) t/git-gui/remote-rm (depends on: t/git-gui/remote-add)
^ permalink raw reply related
* [PATCH 5/5] git-gui: mkdir -p when initializing new remote repository
From: pasky @ 2008-09-24 20:44 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924204358.144077183@suse.cz>
[-- Attachment #1: t/git-gui/remote-mkdir.diff --]
[-- Type: text/plain, Size: 1070 bytes --]
This allows the user to create repositories with arbitrary paths
on the server. The downside is that errorneously typed paths are
not caught but instead created remotely; YMMV.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/lib/remote_add.tcl | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/git-gui/lib/remote_add.tcl b/git-gui/lib/remote_add.tcl
index 89e88ee..8e3ad16 100644
--- a/git-gui/lib/remote_add.tcl
+++ b/git-gui/lib/remote_add.tcl
@@ -144,8 +144,9 @@ method _add {} {
if {[info exists env(GIT_SSH)]} {
set ssh $env(GIT_SSH)
}
- lappend cmds [list exec $ssh $host git --git-dir=$path init --bare]
+ lappend cmds [list exec $ssh $host mkdir -p $location && git --git-dir=$path init --bare]
} elseif { ! [regexp {://} $location xx] } {
+ lappend cmds [list exec mkdir -p $location]
lappend cmds [list exec git --git-dir=$location init --bare]
} else {
tk_messageBox \
--
tg: (f30d624..) t/git-gui/remote-mkdir (depends on: t/git-gui/remote-add)
^ permalink raw reply related
* [PATCH 3/5] git-gui: Add support for adding remotes
From: pasky @ 2008-09-24 20:44 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924204358.144077183@suse.cz>
[-- Attachment #1: t/git-gui/remote-add.diff --]
[-- Type: text/plain, Size: 6707 bytes --]
When a remote is being added, it can also be automatically either fetched
or initialized and pushed; this patch adds capability for initializing
of local and ssh repositories. This also of course leaves a lot of space
for further customization features, like individually turning the
initialization phase on/off or tuning attributes of the remote
repository; I consider that out of scope of this patch, however.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/git-gui.sh | 4 +
git-gui/lib/remote.tcl | 15 ++++
git-gui/lib/remote_add.tcl | 190 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 209 insertions(+), 0 deletions(-)
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 75bd460..79d7597 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -2305,6 +2305,10 @@ if {[is_enabled transport]} {
menu .mbar.remote
.mbar.remote add command \
+ -label [mc "Add..."] \
+ -command remote_add::dialog \
+ -accelerator $M1T-A
+ .mbar.remote add command \
-label [mc "Push..."] \
-command do_push_anywhere \
-accelerator $M1T-P
diff --git a/git-gui/lib/remote.tcl b/git-gui/lib/remote.tcl
index d97c851..643f0bc 100644
--- a/git-gui/lib/remote.tcl
+++ b/git-gui/lib/remote.tcl
@@ -221,3 +221,18 @@ proc populate_remotes_menu {} {
add_push_entry $r
}
}
+
+proc add_single_remote {name location} {
+ global all_remotes repo_config
+ lappend all_remotes $name
+
+ git remote add $name $location
+
+ # XXX: Better re-read the config so that we will never get out
+ # of sync with git remote implementation?
+ set repo_config(remote.$name.url) $location
+ set repo_config(remote.$name.fetch) "+refs/heads/*:refs/remotes/$name/*"
+
+ add_fetch_entry $name
+ add_push_entry $name
+}
diff --git a/git-gui/lib/remote_add.tcl b/git-gui/lib/remote_add.tcl
new file mode 100644
index 0000000..89e88ee
--- /dev/null
+++ b/git-gui/lib/remote_add.tcl
@@ -0,0 +1,190 @@
+# git-gui remote adding support
+# Copyright (C) 2008 Petr Baudis
+
+class remote_add {
+
+field w ; # widget path
+field w_name ; # new remote name widget
+field w_loc ; # new remote location widget
+
+field name {}; # name of the remote the user has chosen
+field location {}; # location of the remote the user has chosen
+
+field opt_action fetch; # action to do after registering the remote locally
+
+constructor dialog {} {
+ global repo_config
+
+ make_toplevel top w
+ wm title $top [append "[appname] ([reponame]): " [mc "Add Remote"]]
+ if {$top ne {.}} {
+ wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
+ }
+
+ label $w.header -text [mc "Add New Remote"] -font font_uibold
+ pack $w.header -side top -fill x
+
+ frame $w.buttons
+ button $w.buttons.create -text [mc Add] \
+ -default active \
+ -command [cb _add]
+ pack $w.buttons.create -side right
+ button $w.buttons.cancel -text [mc Cancel] \
+ -command [list destroy $w]
+ pack $w.buttons.cancel -side right -padx 5
+ pack $w.buttons -side bottom -fill x -pady 10 -padx 10
+
+ labelframe $w.desc -text [mc "Remote Details"]
+
+ label $w.desc.name_l -text [mc "Name:"]
+ set w_name $w.desc.name_t
+ entry $w_name \
+ -borderwidth 1 \
+ -relief sunken \
+ -width 40 \
+ -textvariable @name \
+ -validate key \
+ -validatecommand [cb _validate_name %d %S]
+ grid $w.desc.name_l $w_name -sticky we -padx {0 5}
+
+ label $w.desc.loc_l -text [mc "Location:"]
+ set w_loc $w.desc.loc_t
+ entry $w_loc \
+ -borderwidth 1 \
+ -relief sunken \
+ -width 40 \
+ -textvariable @location
+ grid $w.desc.loc_l $w_loc -sticky we -padx {0 5}
+
+ grid columnconfigure $w.desc 1 -weight 1
+ pack $w.desc -anchor nw -fill x -pady 5 -padx 5
+
+ labelframe $w.action -text [mc "Further Action"]
+
+ radiobutton $w.action.fetch \
+ -text [mc "Fetch Immediately"] \
+ -value fetch \
+ -variable @opt_action
+ pack $w.action.fetch -anchor nw
+
+ radiobutton $w.action.push \
+ -text [mc "Initialize Remote Repository and Push"] \
+ -value push \
+ -variable @opt_action
+ pack $w.action.push -anchor nw
+
+ radiobutton $w.action.none \
+ -text [mc "Do Nothing Else Now"] \
+ -value none \
+ -variable @opt_action
+ pack $w.action.none -anchor nw
+
+ grid columnconfigure $w.action 1 -weight 1
+ pack $w.action -anchor nw -fill x -pady 5 -padx 5
+
+ bind $w <Visibility> [cb _visible]
+ bind $w <Key-Escape> [list destroy $w]
+ bind $w <Key-Return> [cb _add]\;break
+ tkwait window $w
+}
+
+method _add {} {
+ global repo_config env
+ global M1B
+
+ if {$name eq {}} {
+ tk_messageBox \
+ -icon error \
+ -type ok \
+ -title [wm title $w] \
+ -parent $w \
+ -message [mc "Please supply a remote name."]
+ focus $w_name
+ return
+ }
+
+ # XXX: We abuse check-ref-format here, but
+ # that should be ok.
+ if {[catch {git check-ref-format "remotes/$name"}]} {
+ tk_messageBox \
+ -icon error \
+ -type ok \
+ -title [wm title $w] \
+ -parent $w \
+ -message [mc "'%s' is not an acceptable remote name." $name]
+ focus $w_name
+ return
+ }
+
+ if {[catch {add_single_remote $name $location}]} {
+ tk_messageBox \
+ -icon error \
+ -type ok \
+ -title [wm title $w] \
+ -parent $w \
+ -message [mc "Failed to add remote '%s' of location '%s'." $name $location]
+ focus $w_name
+ return
+ }
+
+ switch -- $opt_action {
+ fetch {
+ set c [console::new \
+ [mc "fetch %s" $remote] \
+ [mc "Fetching the %s" $remote]]
+ console::exec $c [list git fetch --all $name]
+ }
+ push {
+ set cmds [list]
+
+ # Parse the location
+ if { [regexp {(?:git\+)?ssh://([^/]+)(/.+)} $location xx host path]
+ || [regexp {([^:][^:]+):(.+)} $location xx host path]} {
+ set ssh ssh
+ if {[info exists env(GIT_SSH)]} {
+ set ssh $env(GIT_SSH)
+ }
+ lappend cmds [list exec $ssh $host git --git-dir=$path init --bare]
+ } elseif { ! [regexp {://} $location xx] } {
+ lappend cmds [list exec git --git-dir=$location init --bare]
+ } else {
+ tk_messageBox \
+ -icon error \
+ -type ok \
+ -title [wm title $w] \
+ -parent $w \
+ -message [mc "Do not know how to initialize repository at location '%s'." $location]
+ destroy $w
+ return
+ }
+
+ set c [console::new \
+ [mc "push %s" $name] \
+ [mc "Setting up the %s (at %s)" $name $location]]
+
+ lappend cmds [list exec git push -v --all $name]
+ console::chain $c $cmds
+ }
+ none {
+ }
+ }
+
+ destroy $w
+}
+
+method _validate_name {d S} {
+ if {$d == 1} {
+ if {[regexp {[~^:?*\[\0- ]} $S]} {
+ return 0
+ }
+ }
+ return 1
+}
+
+method _visible {} {
+ grab $w
+ $w_name icursor end
+ focus $w_name
+}
+
+}
--
tg: (fd699bc..) t/git-gui/remote-add (depends on: t/git-gui/populate-refactor)
^ permalink raw reply related
* [PATCH 2/5] git-gui: Squash populate_{push,fetch}_menu to populate_remotes_menu
From: pasky @ 2008-09-24 20:44 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924204358.144077183@suse.cz>
[-- Attachment #1: t/git-gui/populate-refactor.diff --]
[-- Type: text/plain, Size: 4505 bytes --]
The meat of the routines is now separated to add_fetch_entry() and
add_push_entry(). This refactoring will allow easy implementation of adding
individual remotes later.
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/git-gui.sh | 3 +-
git-gui/lib/remote.tcl | 137 ++++++++++++++++++++++++------------------------
2 files changed, 70 insertions(+), 70 deletions(-)
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 10d8a44..75bd460 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -3100,8 +3100,7 @@ if {[is_enabled transport]} {
load_all_remotes
set n [.mbar.remote index end]
- populate_push_menu
- populate_fetch_menu
+ populate_remotes_menu
set n [expr {[.mbar.remote index end] - $n}]
if {$n > 0} {
if {[.mbar.remote type 0] eq "tearoff"} { incr n }
diff --git a/git-gui/lib/remote.tcl b/git-gui/lib/remote.tcl
index 0e86dda..d97c851 100644
--- a/git-gui/lib/remote.tcl
+++ b/git-gui/lib/remote.tcl
@@ -132,91 +132,92 @@ proc load_all_remotes {} {
set all_remotes [lsort -unique $all_remotes]
}
-proc populate_fetch_menu {} {
- global all_remotes repo_config
-
+proc add_fetch_entry {r} {
+ global repo_config
set remote_m .mbar.remote
set fetch_m $remote_m.fetch
set prune_m $remote_m.prune
-
- foreach r $all_remotes {
- set enable 0
- if {![catch {set a $repo_config(remote.$r.url)}]} {
- if {![catch {set a $repo_config(remote.$r.fetch)}]} {
- set enable 1
- }
- } else {
- catch {
- set fd [open [gitdir remotes $r] r]
- while {[gets $fd n] >= 0} {
- if {[regexp {^Pull:[ \t]*([^:]+):} $n]} {
- set enable 1
- break
- }
+ set enable 0
+ if {![catch {set a $repo_config(remote.$r.url)}]} {
+ if {![catch {set a $repo_config(remote.$r.fetch)}]} {
+ set enable 1
+ }
+ } else {
+ catch {
+ set fd [open [gitdir remotes $r] r]
+ while {[gets $fd n] >= 0} {
+ if {[regexp {^Pull:[ \t]*([^:]+):} $n]} {
+ set enable 1
+ break
}
- close $fd
}
+ close $fd
}
+ }
- if {$enable} {
- if {![winfo exists $fetch_m]} {
- menu $prune_m
- $remote_m insert 0 cascade \
- -label [mc "Prune from"] \
- -menu $prune_m
-
- menu $fetch_m
- $remote_m insert 0 cascade \
- -label [mc "Fetch from"] \
- -menu $fetch_m
- }
-
- $fetch_m add command \
- -label $r \
- -command [list fetch_from $r]
- $prune_m add command \
- -label $r \
- -command [list prune_from $r]
+ if {$enable} {
+ if {![winfo exists $fetch_m]} {
+ menu $prune_m
+ $remote_m insert 0 cascade \
+ -label [mc "Prune from"] \
+ -menu $prune_m
+
+ menu $fetch_m
+ $remote_m insert 0 cascade \
+ -label [mc "Fetch from"] \
+ -menu $fetch_m
}
+
+ $fetch_m add command \
+ -label $r \
+ -command [list fetch_from $r]
+ $prune_m add command \
+ -label $r \
+ -command [list prune_from $r]
}
}
-proc populate_push_menu {} {
- global all_remotes repo_config
-
+proc add_push_entry {r} {
+ global repo_config
set remote_m .mbar.remote
set push_m $remote_m.push
-
- foreach r $all_remotes {
- set enable 0
- if {![catch {set a $repo_config(remote.$r.url)}]} {
- if {![catch {set a $repo_config(remote.$r.push)}]} {
- set enable 1
- }
- } else {
- catch {
- set fd [open [gitdir remotes $r] r]
- while {[gets $fd n] >= 0} {
- if {[regexp {^Push:[ \t]*([^:]+):} $n]} {
- set enable 1
- break
- }
+ set enable 0
+ if {![catch {set a $repo_config(remote.$r.url)}]} {
+ if {![catch {set a $repo_config(remote.$r.push)}]} {
+ set enable 1
+ }
+ } else {
+ catch {
+ set fd [open [gitdir remotes $r] r]
+ while {[gets $fd n] >= 0} {
+ if {[regexp {^Push:[ \t]*([^:]+):} $n]} {
+ set enable 1
+ break
}
- close $fd
}
+ close $fd
}
+ }
- if {$enable} {
- if {![winfo exists $push_m]} {
- menu $push_m
- $remote_m insert 0 cascade \
- -label [mc "Push to"] \
- -menu $push_m
- }
-
- $push_m add command \
- -label $r \
- -command [list push_to $r]
+ if {$enable} {
+ if {![winfo exists $push_m]} {
+ menu $push_m
+ $remote_m insert 0 cascade \
+ -label [mc "Push to"] \
+ -menu $push_m
}
+
+ $push_m add command \
+ -label $r \
+ -command [list push_to $r]
+ }
+}
+
+proc populate_remotes_menu {} {
+ global all_remotes
+
+ foreach r $all_remotes {
+ add_fetch_entry $r
+ add_push_entry $r
}
}
--
tg: (c427559..) t/git-gui/populate-refactor (depends on: vanilla/master)
^ permalink raw reply related
* [PATCH 1/5] git-gui: Clarify the Remote -> Delete... action
From: pasky @ 2008-09-24 20:43 UTC (permalink / raw)
To: git; +Cc: spearce
In-Reply-To: <20080924204358.144077183@suse.cz>
[-- Attachment #1: t/git-gui/delbranch.diff --]
[-- Type: text/plain, Size: 1724 bytes --]
Currently, it was not really clear what all does this perform. We rename
"Delete..." to "Delete Branch..." (since this does not delete the remote
as a whole) and relabel the window from "Delete Remote Branch" to "Delete
Branch Remotely" (since the action also involves pushing the delete out).
This patch has been sponsored by Novartis.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-gui/git-gui.sh | 2 +-
git-gui/lib/remote_branch_delete.tcl | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 10d8a44..355c782 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -2309,7 +2309,7 @@ if {[is_enabled transport]} {
-command do_push_anywhere \
-accelerator $M1T-P
.mbar.remote add command \
- -label [mc "Delete..."] \
+ -label [mc "Delete Branch..."] \
-command remote_branch_delete::dialog
}
diff --git a/git-gui/lib/remote_branch_delete.tcl b/git-gui/lib/remote_branch_delete.tcl
index c7b8148..fbcfb27 100644
--- a/git-gui/lib/remote_branch_delete.tcl
+++ b/git-gui/lib/remote_branch_delete.tcl
@@ -26,12 +26,12 @@ constructor dialog {} {
global all_remotes M1B
make_toplevel top w
- wm title $top [append "[appname] ([reponame]): " [mc "Delete Remote Branch"]]
+ wm title $top [append "[appname] ([reponame]): " [mc "Delete Branch Remotely"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
}
- label $w.header -text [mc "Delete Remote Branch"] -font font_uibold
+ label $w.header -text [mc "Delete Branch Remotely"] -font font_uibold
pack $w.header -side top -fill x
frame $w.buttons
--
tg: (c427559..) t/git-gui/delbranch (depends on: vanilla/master)
^ permalink raw reply related
* [PATCH 0/5] git-gui: Remotes manipulation enhancements
From: pasky @ 2008-09-24 20:43 UTC (permalink / raw)
To: git; +Cc: spearce
This patch series implements various remotes manipulation enhancements,
hopefully eliminating the main remaining gap in git-gui functionality.
I hope this will go ok... the general atrocity of git send-email forced me to
actually send out this TopGit patch queue using quilt mail for now.
^ permalink raw reply
* Re: fatal: cannot store pack file (git 1.6.0.2 + sshfs)
From: Jhair Tocancipa Triana @ 2008-09-24 20:05 UTC (permalink / raw)
To: Nathan W. Panike; +Cc: Shawn O. Pearce, Jhair Tocancipa Triana, git
In-Reply-To: <d77df1110809241057rb1d7361pf76a4cde8834b1df@mail.gmail.com>
"Nathan W. Panike" <nathan.panike@gmail.com> writes:
> Resend with reply to all:
>
> When I mount with sshfs, I have to give the option
>
> sshfs -o workaround=rename ...
>
> to make things work normally.
I also mount with the same option (-o workaround=rename) to fix other
issues I had before, see
http://git.or.cz/gitwiki/GitFaq#head-c04838bdb94dae45b743fe6ebefde24e4df04c62
Will try with latest gist "master" as advised by Shawn.
Thanks,
--
Jhair
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox