summaryrefslogtreecommitdiff
path: root/lib/branch_create.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/branch_create.tcl')
-rw-r--r--lib/branch_create.tcl224
1 files changed, 0 insertions, 224 deletions
diff --git a/lib/branch_create.tcl b/lib/branch_create.tcl
deleted file mode 100644
index 4bb907705c..0000000000
--- a/lib/branch_create.tcl
+++ /dev/null
@@ -1,224 +0,0 @@
-# git-gui branch create support
-# Copyright (C) 2006, 2007 Shawn Pearce
-
-class branch_create {
-
-field w ; # widget path
-field w_rev ; # mega-widget to pick the initial revision
-field w_name ; # new branch name widget
-
-field name {}; # name of the branch the user has chosen
-field name_type user; # type of branch name to use
-
-field opt_merge ff; # type of merge to apply to existing branch
-field opt_checkout 1; # automatically checkout the new branch?
-field opt_fetch 1; # refetch tracking branch if used?
-field reset_ok 0; # did the user agree to reset?
-
-constructor dialog {} {
- global repo_config use_ttk NS
-
- make_dialog top w
- wm withdraw $w
- wm title $top [append "[appname] ([reponame]): " [mc "Create Branch"]]
- if {$top ne {.}} {
- wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
- }
-
- ${NS}::label $w.header -text [mc "Create New Branch"] \
- -font font_uibold -anchor center
- pack $w.header -side top -fill x
-
- ${NS}::frame $w.buttons
- ${NS}::button $w.buttons.create -text [mc Create] \
- -default active \
- -command [cb _create]
- pack $w.buttons.create -side right
- ${NS}::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
-
- ${NS}::labelframe $w.desc -text [mc "Branch Name"]
- ${NS}::radiobutton $w.desc.name_r \
- -text [mc "Name:"] \
- -value user \
- -variable @name_type
- if {!$use_ttk} {$w.desc.name_r configure -anchor w}
- set w_name $w.desc.name_t
- ${NS}::entry $w_name \
- -width 40 \
- -textvariable @name \
- -validate key \
- -validatecommand [cb _validate %d %S]
- grid $w.desc.name_r $w_name -sticky we -padx {0 5}
-
- ${NS}::radiobutton $w.desc.match_r \
- -text [mc "Match Tracking Branch Name"] \
- -value match \
- -variable @name_type
- if {!$use_ttk} {$w.desc.match_r configure -anchor w}
- grid $w.desc.match_r -sticky we -padx {0 5} -columnspan 2
-
- grid columnconfigure $w.desc 1 -weight 1
- pack $w.desc -anchor nw -fill x -pady 5 -padx 5
-
- set w_rev [::choose_rev::new $w.rev [mc "Starting Revision"]]
- pack $w.rev -anchor nw -fill both -expand 1 -pady 5 -padx 5
-
- ${NS}::labelframe $w.options -text [mc Options]
-
- ${NS}::frame $w.options.merge
- ${NS}::label $w.options.merge.l -text [mc "Update Existing Branch:"]
- pack $w.options.merge.l -side left
- ${NS}::radiobutton $w.options.merge.no \
- -text [mc No] \
- -value none \
- -variable @opt_merge
- pack $w.options.merge.no -side left
- ${NS}::radiobutton $w.options.merge.ff \
- -text [mc "Fast Forward Only"] \
- -value ff \
- -variable @opt_merge
- pack $w.options.merge.ff -side left
- ${NS}::radiobutton $w.options.merge.reset \
- -text [mc Reset] \
- -value reset \
- -variable @opt_merge
- pack $w.options.merge.reset -side left
- pack $w.options.merge -anchor nw
-
- ${NS}::checkbutton $w.options.fetch \
- -text [mc "Fetch Tracking Branch"] \
- -variable @opt_fetch
- pack $w.options.fetch -anchor nw
-
- ${NS}::checkbutton $w.options.checkout \
- -text [mc "Checkout After Creation"] \
- -variable @opt_checkout
- pack $w.options.checkout -anchor nw
- pack $w.options -anchor nw -fill x -pady 5 -padx 5
-
- trace add variable @name_type write [cb _select]
-
- set name $repo_config(gui.newbranchtemplate)
- if {[is_config_true gui.matchtrackingbranch]} {
- set name_type match
- }
-
- bind $w <Visibility> [cb _visible]
- bind $w <Key-Escape> [list destroy $w]
- bind $w <Key-Return> [cb _create]\;break
- wm deiconify $w
- tkwait window $w
-}
-
-method _create {} {
- global repo_config
- global M1B
-
- set spec [$w_rev get_tracking_branch]
- switch -- $name_type {
- user {
- set newbranch $name
- }
- match {
- if {$spec eq {}} {
- tk_messageBox \
- -icon error \
- -type ok \
- -title [wm title $w] \
- -parent $w \
- -message [mc "Please select a tracking branch."]
- return
- }
- if {![regsub ^refs/heads/ [lindex $spec 2] {} newbranch]} {
- tk_messageBox \
- -icon error \
- -type ok \
- -title [wm title $w] \
- -parent $w \
- -message [mc "Tracking branch %s is not a branch in the remote repository." [$w get]]
- return
- }
- }
- }
-
- if {$newbranch eq {}
- || $newbranch eq $repo_config(gui.newbranchtemplate)} {
- tk_messageBox \
- -icon error \
- -type ok \
- -title [wm title $w] \
- -parent $w \
- -message [mc "Please supply a branch name."]
- focus $w_name
- return
- }
-
- if {[catch {git check-ref-format "heads/$newbranch"}]} {
- tk_messageBox \
- -icon error \
- -type ok \
- -title [wm title $w] \
- -parent $w \
- -message [mc "'%s' is not an acceptable branch name." $newbranch]
- focus $w_name
- return
- }
-
- if {$spec ne {} && $opt_fetch} {
- set new {}
- } elseif {[catch {set new [$w_rev commit_or_die]}]} {
- return
- }
-
- set co [::checkout_op::new \
- [$w_rev get] \
- $new \
- refs/heads/$newbranch]
- $co parent $w
- $co enable_create 1
- $co enable_merge $opt_merge
- $co enable_checkout $opt_checkout
- if {$spec ne {} && $opt_fetch} {
- $co enable_fetch $spec
- }
- if {$spec ne {}} {
- $co remote_source $spec
- }
-
- if {[$co run]} {
- destroy $w
- } else {
- focus $w_name
- }
-}
-
-method _validate {d S} {
- if {$d == 1} {
- if {[regexp {[~^:?*\[\0- ]} $S]} {
- return 0
- }
- if {[string length $S] > 0} {
- set name_type user
- }
- }
- return 1
-}
-
-method _select {args} {
- if {$name_type eq {match}} {
- $w_rev pick_tracking_branch
- }
-}
-
-method _visible {} {
- grab $w
- if {$name_type eq {user}} {
- $w_name icursor end
- focus $w_name
- }
-}
-
-}