Merge tag 'gitgui-0.20.0' of http://repo.or.cz/r/git-gui
git-gui 0.20.0 * tag 'gitgui-0.20.0' of http://repo.or.cz/r/git-gui: git-gui: set version 0.20 git-gui: sv.po: Update Swedish translation (547t0f0u) git-gui i18n: Updated Bulgarian translation (547t,0f,0u) git-gui: Makes chooser set 'gitdir' to the resolved path git-gui: Fixes chooser not accepting gitfiles git-gui: reinstate support for Tcl 8.4 git-gui: fix problem with gui.maxfilesdisplayed git-gui: fix verbose loading when git path contains spaces. git-gui/gitk: Do not depend on Cygwin's "kill" command on Windows git-gui: add configurable tab size to the diff view git-gui: Make git-gui lib dir configurable at runime git-gui i18n: Updated Bulgarian translation (520t,0f,0u) L10n: vi.po (543t): Init translation for Vietnamese git-gui: align the new recursive checkbox with the radiobuttons. git-gui: Add a 'recursive' checkbox in the clone menu.
This commit is contained in:
@ -18,6 +18,7 @@ field local_path {} ; # Where this repository is locally
|
||||
field origin_url {} ; # Where we are cloning from
|
||||
field origin_name origin ; # What we shall call 'origin'
|
||||
field clone_type hardlink ; # Type of clone to construct
|
||||
field recursive true ; # Recursive cloning flag
|
||||
field readtree_err ; # Error output from read-tree (if any)
|
||||
field sorted_recent ; # recent repositories (sorted)
|
||||
|
||||
@ -337,16 +338,31 @@ method _git_init {} {
|
||||
return 1
|
||||
}
|
||||
|
||||
proc _is_git {path} {
|
||||
proc _is_git {path {outdir_var ""}} {
|
||||
if {$outdir_var ne ""} {
|
||||
upvar 1 $outdir_var outdir
|
||||
}
|
||||
if {[file isfile $path]} {
|
||||
set fp [open $path r]
|
||||
gets $fp line
|
||||
close $fp
|
||||
if {[regexp "^gitdir: (.+)$" $line line link_target]} {
|
||||
set path [file join [file dirname $path] $link_target]
|
||||
set path [file normalize $path]
|
||||
}
|
||||
}
|
||||
|
||||
if {[file exists [file join $path HEAD]]
|
||||
&& [file exists [file join $path objects]]
|
||||
&& [file exists [file join $path config]]} {
|
||||
set outdir $path
|
||||
return 1
|
||||
}
|
||||
if {[is_Cygwin]} {
|
||||
if {[file exists [file join $path HEAD]]
|
||||
&& [file exists [file join $path objects.lnk]]
|
||||
&& [file exists [file join $path config.lnk]]} {
|
||||
set outdir $path
|
||||
return 1
|
||||
}
|
||||
}
|
||||
@ -525,6 +541,11 @@ method _do_clone {} {
|
||||
foreach r $w_types {
|
||||
pack $r -anchor w
|
||||
}
|
||||
${NS}::checkbutton $args.type_f.recursive \
|
||||
-text [mc "Recursively clone submodules too"] \
|
||||
-variable @recursive \
|
||||
-onvalue true -offvalue false
|
||||
pack $args.type_f.recursive -anchor w
|
||||
grid $args.type_l $args.type_f -sticky new
|
||||
|
||||
grid columnconfigure $args 1 -weight 1
|
||||
@ -952,6 +973,30 @@ method _do_clone_checkout {HEAD} {
|
||||
fileevent $fd readable [cb _readtree_wait $fd]
|
||||
}
|
||||
|
||||
method _do_validate_submodule_cloning {ok} {
|
||||
if {$ok} {
|
||||
$o_cons done $ok
|
||||
set done 1
|
||||
} else {
|
||||
_clone_failed $this [mc "Cannot clone submodules."]
|
||||
}
|
||||
}
|
||||
|
||||
method _do_clone_submodules {} {
|
||||
if {$recursive eq {true}} {
|
||||
destroy $w_body
|
||||
set o_cons [console::embed \
|
||||
$w_body \
|
||||
[mc "Cloning submodules"]]
|
||||
pack $w_body -fill both -expand 1 -padx 10
|
||||
$o_cons exec \
|
||||
[list git submodule update --init --recursive] \
|
||||
[cb _do_validate_submodule_cloning]
|
||||
} else {
|
||||
set done 1
|
||||
}
|
||||
}
|
||||
|
||||
method _readtree_wait {fd} {
|
||||
set buf [read $fd]
|
||||
$o_cons update_meter $buf
|
||||
@ -982,7 +1027,7 @@ method _readtree_wait {fd} {
|
||||
fconfigure $fd_ph -blocking 0 -translation binary -eofchar {}
|
||||
fileevent $fd_ph readable [cb _postcheckout_wait $fd_ph]
|
||||
} else {
|
||||
set done 1
|
||||
_do_clone_submodules $this
|
||||
}
|
||||
}
|
||||
|
||||
@ -996,7 +1041,7 @@ method _postcheckout_wait {fd_ph} {
|
||||
hook_failed_popup post-checkout $pch_error 0
|
||||
}
|
||||
unset pch_error
|
||||
set done 1
|
||||
_do_clone_submodules $this
|
||||
return
|
||||
}
|
||||
fconfigure $fd_ph -blocking 0
|
||||
@ -1063,7 +1108,7 @@ method _open_local_path {} {
|
||||
}
|
||||
|
||||
method _do_open2 {} {
|
||||
if {![_is_git [file join $local_path .git]]} {
|
||||
if {![_is_git [file join $local_path .git] actualgit]} {
|
||||
error_popup [mc "Not a Git repository: %s" [file tail $local_path]]
|
||||
return
|
||||
}
|
||||
@ -1076,7 +1121,7 @@ method _do_open2 {} {
|
||||
}
|
||||
|
||||
_append_recentrepos [pwd]
|
||||
set ::_gitdir .git
|
||||
set ::_gitdir $actualgit
|
||||
set ::_prefix {}
|
||||
set done 1
|
||||
}
|
||||
|
Reference in New Issue
Block a user