1 # git-gui branch checkout support
2 # Copyright (C) 2007 Shawn Pearce
4 class branch_checkout
{
6 field w
; # widget path
7 field w_rev
; # mega-widget to pick the initial revision
9 field opt_fetch
1; # refetch tracking branch if used?
10 field opt_detach
0; # force a detached head case?
12 constructor dialog
{} {
14 wm title
$top "[appname] ([reponame]): Checkout Branch"
16 wm geometry
$top "+[winfo rootx .]+[winfo rooty .]"
19 label $w.header
-text {Checkout Branch
} -font font_uibold
20 pack $w.header
-side top
-fill x
23 button $w.buttons.create
-text Checkout
\
25 -command [cb _checkout
]
26 pack $w.buttons.create
-side right
27 button $w.buttons.cancel
-text {Cancel
} \
28 -command [list destroy $w]
29 pack $w.buttons.cancel
-side right
-padx 5
30 pack $w.buttons
-side bottom
-fill x
-pady 10 -padx 10
32 set w_rev
[::choose_rev::new $w.rev
{Revision
}]
33 pack $w.rev
-anchor nw
-fill both
-expand 1 -pady 5 -padx 5
35 labelframe $w.
options -text {Options
}
37 checkbutton $w.
options.fetch
\
38 -text {Fetch Tracking Branch
} \
40 pack $w.
options.fetch
-anchor nw
42 checkbutton $w.
options.detach
\
43 -text {Detach From Local Branch
} \
45 pack $w.
options.detach
-anchor nw
47 pack $w.
options -anchor nw
-fill x
-pady 5 -padx 5
49 bind $w <Visibility
> [cb _visible
]
50 bind $w <Key-Escape
> [list destroy $w]
51 bind $w <Key-Return
> [cb _checkout
]\;break
56 set spec
[$w_rev get_tracking_branch
]
57 if {$spec ne
{} && $opt_fetch} {
59 } elseif
{[catch {set new
[$w_rev commit_or_die
]}]} {
66 set ref
[$w_rev get_local_branch
]
69 set co
[::checkout_op::new [$w_rev get
] $new $ref]
72 if {$spec ne
{} && $opt_fetch} {
73 $co enable_fetch
$spec