From 3d83cfbbd12056b7884839ea20bde25b40146250 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos <wayo.cavazos@gmail.com> Date: Sun, 18 Jan 2009 18:14:14 -0600 Subject: [PATCH 1/3] git-tool.remote: minor changes --- extra/git-tool/remote/remote.factor | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/extra/git-tool/remote/remote.factor b/extra/git-tool/remote/remote.factor index e5291a8459..77539d5ad4 100644 --- a/extra/git-tool/remote/remote.factor +++ b/extra/git-tool/remote/remote.factor @@ -62,15 +62,17 @@ TUPLE: <git-remote-gadget> < pack [let | REPO [ GADGET repository>> ] | - GADGET clear-gadget + ! GADGET clear-gadget - GADGET + ! GADGET + + { } ! Repository label "Repository: " REPO [ current-directory get ] with-directory append <label> - add-gadget + suffix ! Branch button @@ -103,7 +105,7 @@ TUPLE: <git-remote-gadget> < pack ] <bevel-button> add-gadget - add-gadget + suffix ! Remote button @@ -138,7 +140,7 @@ TUPLE: <git-remote-gadget> < pack ] <bevel-button> add-gadget - add-gadget + suffix ! Remote branch button @@ -172,7 +174,7 @@ TUPLE: <git-remote-gadget> < pack ] <bevel-button> add-gadget - add-gadget + suffix ! Fetch button @@ -184,7 +186,7 @@ TUPLE: <git-remote-gadget> < pack GADGET refresh-git-remote-gadget ] - <bevel-button> add-gadget + <bevel-button> suffix ! Available changes @@ -223,7 +225,7 @@ TUPLE: <git-remote-gadget> < pack ] <bevel-button> add-gadget - add-gadget + suffix ] when @@ -266,12 +268,18 @@ TUPLE: <git-remote-gadget> < pack ] <bevel-button> add-gadget - add-gadget + suffix ] when ] ] ] + + GADGET clear-gadget + + GADGET swap + + [ add-gadget ] each drop From d4769aa9fc02a6d0d2c47bfdddb80b666553e2d4 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos <wayo.cavazos@gmail.com> Date: Mon, 19 Jan 2009 15:05:49 -0600 Subject: [PATCH 2/3] git-tool.remote: minor update --- extra/git-tool/remote/remote.factor | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extra/git-tool/remote/remote.factor b/extra/git-tool/remote/remote.factor index 77539d5ad4..4d9d99b0f0 100644 --- a/extra/git-tool/remote/remote.factor +++ b/extra/git-tool/remote/remote.factor @@ -303,6 +303,8 @@ TUPLE: <git-remote-gadget> < pack REPO { "git" "fetch" REMOTE-BRANCH } git-process drop ] + GADGET refresh-git-remote-gadget + GADGET fetch-period>> sleep t From 9e4e1c4a4dcd3b7bd7b97fc57056c66778aa868f Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos <wayo.cavazos@gmail.com> Date: Mon, 19 Jan 2009 15:10:39 -0600 Subject: [PATCH 3/3] Remote 'git-tool' (project moved to other repository) --- extra/git-tool/git-tool.factor | 470 ---------------------------- extra/git-tool/remote/remote.factor | 402 ------------------------ 2 files changed, 872 deletions(-) delete mode 100644 extra/git-tool/git-tool.factor delete mode 100644 extra/git-tool/remote/remote.factor diff --git a/extra/git-tool/git-tool.factor b/extra/git-tool/git-tool.factor deleted file mode 100644 index ff45d32c65..0000000000 --- a/extra/git-tool/git-tool.factor +++ /dev/null @@ -1,470 +0,0 @@ - -USING: accessors combinators.cleave combinators.short-circuit -concurrency.combinators destructors fry io io.directories -io.encodings io.encodings.utf8 io.launcher io.monitors -io.pathnames io.pipes io.ports kernel locals math namespaces -sequences splitting strings threads ui ui.gadgets -ui.gadgets.buttons ui.gadgets.editors ui.gadgets.labels -ui.gadgets.packs ui.gadgets.tracks ; - -IN: git-tool - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: head** ( seq obj -- seq/f ) dup number? [ head ] [ dupd find drop head ] if ; - -: tail** ( seq obj -- seq/f ) - dup number? - [ tail ] - [ dupd find drop [ tail ] [ drop f ] if* ] - if ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: <process-stdout-stderr-reader> ( DESC -- process stream stream ) - [ - [let | STDOUT-PIPE [ (pipe) |dispose ] - STDERR-PIPE [ (pipe) |dispose ] | - - [let | PROCESS [ DESC >process ] | - - PROCESS - [ STDOUT-PIPE out>> or ] change-stdout - [ STDERR-PIPE out>> or ] change-stderr - run-detached - - STDOUT-PIPE out>> dispose - STDERR-PIPE out>> dispose - - STDOUT-PIPE in>> <input-port> utf8 <decoder> - STDERR-PIPE in>> <input-port> utf8 <decoder> ] ] - ] - with-destructors ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: run-process/result ( desc -- process ) - <process-stdout-stderr-reader> - { - [ contents [ string-lines ] [ f ] if* ] - [ contents [ string-lines ] [ f ] if* ] - } - parallel-spread - [ >>stdout ] [ >>stderr ] bi* - dup wait-for-process >>status ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! process popup windows -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: popup-window ( title contents -- ) - dup string? [ ] [ "\n" join ] if - <editor> tuck set-editor-string swap open-window ; - -: popup-process-window ( process -- ) - [ stdout>> [ "output" swap popup-window ] when* ] - [ stderr>> [ "error" swap popup-window ] when* ] - [ - [ stdout>> ] [ stderr>> ] bi or not - [ "Process" "NO OUTPUT" popup-window ] - when - ] - tri ; - -: popup-if-error ( process -- ) - { [ status>> 0 = not ] [ popup-process-window t ] } 1&& drop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: git-process ( REPO DESC -- process ) - REPO [ DESC run-process/result ] with-directory ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: git-status-section ( lines section -- lines/f ) - '[ _ = ] tail** - [ - [ "#\t" head? ] tail** - [ "#\t" head? not ] head** - [ 2 tail ] map - ] - [ f ] - if* ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: colon ( -- ch ) CHAR: : ; -: space ( -- ch ) 32 ; - -: git-status-line-file ( line -- file ) - { [ colon = ] 1 [ space = not ] } [ tail** ] each ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -TUPLE: <git-status> - repository - to-commit-new - to-commit-modified - to-commit-deleted - modified - deleted - untracked ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: check-empty ( seq -- seq/f ) dup empty? [ drop f ] when ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: refresh-git-status ( STATUS -- STATUS ) - - [let | LINES [ STATUS repository>> { "git" "status" } git-process stdout>> ] | - - STATUS - - LINES "# Changes to be committed:" git-status-section - [ "new file:" head? ] filter - [ git-status-line-file ] map - check-empty - >>to-commit-new - - LINES "# Changes to be committed:" git-status-section - [ "modified:" head? ] filter - [ git-status-line-file ] map - check-empty - >>to-commit-modified - - LINES "# Changes to be committed:" git-status-section - [ "deleted:" head? ] filter - [ git-status-line-file ] map - check-empty - >>to-commit-deleted - - LINES "# Changed but not updated:" git-status-section - [ "modified:" head? ] filter - [ git-status-line-file ] map - check-empty - >>modified - - LINES "# Changed but not updated:" git-status-section - [ "deleted:" head? ] filter - [ git-status-line-file ] map - check-empty - >>deleted - - LINES "# Untracked files:" git-status-section >>untracked ] ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: git-status ( REPO -- <git-status> ) - - <git-status> new REPO >>repository refresh-git-status ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: factor-git-status ( -- <git-status> ) "resource:" git-status ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! git-tool -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: to-commit ( <git-status> -- seq ) - { to-commit-new>> to-commit-modified>> to-commit-deleted>> } 1arr concat ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: refresh-status-pile ( STATUS PILE -- ) - - STATUS refresh-git-status drop - - PILE clear-gadget - - PILE - - ! Commit section - - [wlet | add-commit-path-button [| TEXT PATH | - - { 1 0 } <track> - - TEXT <label> 2/8 track-add - PATH <label> 6/8 track-add - - "Reset" - [ - drop - - STATUS repository>> - { "git" "reset" "HEAD" PATH } - git-process - drop - - STATUS PILE refresh-status-pile - ] - <bevel-button> f track-add - - add-gadget ] | - - STATUS to-commit - [ - "Changes to be committed" <label> reverse-video-theme add-gadget - - STATUS to-commit-new>> - [| PATH | "new file: " PATH add-commit-path-button ] - each - - STATUS to-commit-modified>> - [| PATH | "modified: " PATH add-commit-path-button ] - each - - STATUS to-commit-deleted>> - [| PATH | "deleted: " PATH add-commit-path-button ] - each - - <pile> 1 >>fill - - [let | EDITOR [ <editor> "COMMIT MESSAGE" over set-editor-string ] | - - EDITOR add-gadget - - "Commit" - [ - drop - [let | MSG [ EDITOR editor-string ] | - - STATUS repository>> - { "git" "commit" "-m" MSG } git-process - popup-if-error ] - STATUS PILE refresh-status-pile - ] - <bevel-button> - add-gadget ] - - add-gadget - - ] - when ] - - ! Modified section - - STATUS modified>> - [ - "Modified but not updated" <label> reverse-video-theme add-gadget - - STATUS modified>> - [| PATH | - - <shelf> - - PATH <label> add-gadget - - "Add" - [ - drop - STATUS repository>> { "git" "add" PATH } git-process popup-if-error - STATUS PILE refresh-status-pile - ] - <bevel-button> add-gadget - - "Diff" - [ - drop - STATUS repository>> { "git" "diff" PATH } git-process - popup-process-window - ] - <bevel-button> add-gadget - - add-gadget - - ] - each - - ] - when - - ! Untracked section - - STATUS untracked>> - [ - "Untracked files" <label> reverse-video-theme add-gadget - - STATUS untracked>> - [| PATH | - - { 1 0 } <track> - - PATH <label> f track-add - - "Add" - [ - drop - STATUS repository>> { "git" "add" PATH } git-process popup-if-error - STATUS PILE refresh-status-pile - ] - <bevel-button> f track-add - - add-gadget - - ] - each - - ] - when - - ! Refresh button - - "Refresh" [ drop STATUS PILE refresh-status-pile ] <bevel-button> add-gadget - - drop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: git-remote-branches ( REPO NAME -- seq ) - REPO { "git" "remote" "show" NAME } git-process stdout>> - " Tracked remote branches" over index 1 + tail first " " split - [ empty? not ] filter ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: refresh-remotes-pile ( REPO PILE -- ) - - PILE clear-gadget - - PILE - - "Remotes" <label> reverse-video-theme add-gadget - - REPO { "git" "remote" } git-process stdout>> [ empty? not ] filter - - [| NAME | - - [let | BRANCH! [ "master" ] | - - { 1 0 } <track> - - NAME <label> 1 track-add - - [let | BRANCH-BUTTON [ "master" [ drop ] <bevel-button> ] | - - BRANCH-BUTTON - [ - drop - - <pile> - - 1 >>fill - - REPO NAME git-remote-branches - [| OTHER-BRANCH | - OTHER-BRANCH - [ - drop - - OTHER-BRANCH BRANCH! - - OTHER-BRANCH BRANCH-BUTTON gadget-child set-label-string - - ] - <bevel-button> - add-gadget - ] - each - - "Select a branch" open-window - ] - >>quot - - 1 track-add ] - - "Fetch" - [ drop REPO { "git" "fetch" NAME } git-process popup-process-window ] - <bevel-button> - 1 track-add - - "..remote/branch" - [ - drop - [let | ARG [ { ".." NAME "/" BRANCH } concat ] | - REPO { "git" "log" ARG } git-process popup-process-window ] - ] - <bevel-button> - 1 track-add - - "Merge" - [ - drop - [let | ARG [ { NAME "/" BRANCH } concat ] | - REPO { "git" "merge" ARG } git-process popup-process-window ] - ] - <bevel-button> - 1 track-add - - "remote/branch.." - [ - drop - [let | ARG [ { NAME "/" BRANCH ".." } concat ] | - REPO { "git" "log" ARG } git-process popup-process-window ] - ] - <bevel-button> - 1 track-add - - "Push" - [ - drop - REPO { "git" "push" NAME "master" } git-process popup-process-window - ] - <bevel-button> - 1 track-add - - add-gadget ] - - ] - each - - drop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: git-tool ( REPO -- ) - - <pile> 1 >>fill - - "Repository: " REPO [ current-directory get ] with-directory append - <label> - add-gadget - - [let | STATUS [ REPO git-status ] - PILE [ <pile> 1 >>fill ] | - - [ - [ - [let | MONITOR [ REPO t <monitor> ] | - [ - [let | PATH [ MONITOR next-change drop ] | - ".git" PATH subseq? ! Ignore git internal operations - [ ] - [ STATUS PILE refresh-status-pile ] - if - t ] - ] - loop - ] - ] - with-monitors - ] - in-thread - - STATUS PILE refresh-status-pile - - PILE add-gadget ] - - REPO <pile> 1 >>fill tuck refresh-remotes-pile add-gadget - - "Git" open-window ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: factor-git-tool ( -- ) "resource:" git-tool ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - diff --git a/extra/git-tool/remote/remote.factor b/extra/git-tool/remote/remote.factor deleted file mode 100644 index 4d9d99b0f0..0000000000 --- a/extra/git-tool/remote/remote.factor +++ /dev/null @@ -1,402 +0,0 @@ - -USING: accessors calendar git-tool git-tool io.directories -io.monitors io.pathnames kernel locals math namespaces -sequences splitting system threads ui ui.gadgets -ui.gadgets.buttons ui.gadgets.labels ui.gadgets.packs ; - -USING: git-tool ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -IN: git-tool.remote - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -TUPLE: <git-remote-gadget> < pack - repository - branch - remote - remote-branch - fetch-period - push - closed - last-refresh ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: current-branch ( REPO -- branch ) - { "git" "branch" } git-process stdout>> [ "* " head? ] find nip 2 tail ; - -: list-branches ( REPO -- branches ) - { "git" "branch" } git-process stdout>> - [ empty? not ] filter - [ 2 tail ] map ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: list-remotes ( REPO -- remotes ) - { "git" "remote" } git-process stdout>> [ empty? not ] filter ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: list-remote-branches ( REPO REMOTE -- branches ) - [let | OUT [ REPO { "git" "remote" "show" REMOTE } git-process stdout>> ] | - - " Tracked remote branches" OUT member? - [ - OUT - " Tracked remote branches" OUT index 1 + tail first " " split - [ empty? not ] filter - ] - [ - OUT - OUT [ " New remote branches" head? ] find drop - 1 + tail first " " split - [ empty? not ] filter - ] - if ] ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: refresh-git-remote-gadget ( GADGET -- ) - - [let | REPO [ GADGET repository>> ] | - - ! GADGET clear-gadget - - ! GADGET - - { } - - ! Repository label - - "Repository: " REPO [ current-directory get ] with-directory append - <label> - suffix - - ! Branch button - - <shelf> - - "Branch: " <label> add-gadget - - REPO current-branch - [ - drop - - <pile> - REPO list-branches - - [| BRANCH | - - BRANCH - [ - drop - REPO { "git" "checkout" BRANCH } git-process popup-if-error - GADGET refresh-git-remote-gadget - ] - <bevel-button> add-gadget - - ] - each - - "Select a branch" open-window - - ] - <bevel-button> add-gadget - - suffix - - ! Remote button - - <shelf> - - "Remote: " <label> add-gadget - - GADGET remote>> - [ - drop - - <pile> - - REPO list-remotes - - [| REMOTE | - - REMOTE - [ - drop - GADGET REMOTE >>remote drop - GADGET "master" >>remote-branch drop - GADGET refresh-git-remote-gadget - ] - <bevel-button> add-gadget - - ] - each - - "Select a remote" open-window - - ] - <bevel-button> add-gadget - - suffix - - ! Remote branch button - - <shelf> - - "Remote branch: " <label> add-gadget - - GADGET remote-branch>> - [ - drop - - <pile> - - REPO GADGET remote>> list-remote-branches - - [| REMOTE-BRANCH | - - REMOTE-BRANCH - [ - drop - GADGET REMOTE-BRANCH >>remote-branch drop - GADGET refresh-git-remote-gadget - ] - <bevel-button> add-gadget - ] - - each - - "Select a remote branch" open-window - - ] - <bevel-button> add-gadget - - suffix - - ! Fetch button - - "Fetch" - [ - drop - [let | REMOTE [ GADGET remote>> ] | - REPO { "git" "fetch" REMOTE } git-process popup-if-error ] - - GADGET refresh-git-remote-gadget - ] - <bevel-button> suffix - - ! Available changes - - [let | REMOTE [ GADGET remote>> ] - REMOTE-BRANCH [ GADGET remote-branch>> ] | - - [let | ARG [ { ".." REMOTE "/" REMOTE-BRANCH } concat ] | - - [let | PROCESS [ REPO { "git" "log" ARG } git-process ] | - - PROCESS stdout>> - [ - <shelf> - - "Changes available:" <label> add-gadget - - "View" - [ - drop - PROCESS popup-process-window - ] - <bevel-button> add-gadget - - "Merge" - [ - drop - - [let | ARG [ { REMOTE "/" REMOTE-BRANCH } concat ] | - - REPO { "git" "merge" ARG } git-process popup-process-window - - ] - - GADGET refresh-git-remote-gadget - - ] - <bevel-button> add-gadget - - suffix - - ] - when - - ] ] ] - - - ! Pushable changes - - [let | REMOTE [ GADGET remote>> ] - REMOTE-BRANCH [ GADGET remote-branch>> ] | - - [let | ARG [ { REMOTE "/" REMOTE-BRANCH ".." } concat ] | - - [let | PROCESS [ REPO { "git" "log" ARG } git-process ] | - - PROCESS stdout>> - [ - <shelf> - - "Pushable changes: " <label> add-gadget - - "View" - [ - drop - PROCESS popup-process-window - ] - <bevel-button> add-gadget - - "Push" - [ - drop - - REPO { "git" "push" REMOTE REMOTE-BRANCH } - git-process - popup-process-window - - GADGET refresh-git-remote-gadget - - ] - <bevel-button> add-gadget - - suffix - - ] - when - - ] ] ] - - GADGET clear-gadget - - GADGET swap - - [ add-gadget ] each - - drop - - ] ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: start-fetch-thread ( GADGET -- ) - - GADGET f >>closed drop - - [ - - [ - - GADGET closed>> - [ f ] - [ - [let | REPO [ GADGET repository>> ] - REMOTE-BRANCH [ GADGET remote-branch>> ] | - - REPO { "git" "fetch" REMOTE-BRANCH } git-process drop ] - - GADGET refresh-git-remote-gadget - - GADGET fetch-period>> sleep - - t - ] - if - - - ] - loop - - ] - - in-thread ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: start-monitor-thread ( GADGET -- ) - - GADGET f >>closed drop - - [ - [ - [let | MONITOR [ GADGET repository>> t <monitor> ] | - - [ - GADGET closed>> - [ f ] - [ - - [let | PATH [ MONITOR next-change drop ] | - - ".git" PATH subseq? - [ ] - [ - micros - GADGET last-refresh>> 0 or - - 1000000 > - [ - GADGET micros >>last-refresh drop - GADGET refresh-git-remote-gadget - ] - when - ] - if ] - - t - - ] - if - ] - loop - ] - ] - with-monitors - ] - in-thread ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -M: <git-remote-gadget> pref-dim* ( gadget -- dim ) drop { 500 500 } ; - -M:: <git-remote-gadget> graft* ( GADGET -- ) - GADGET start-fetch-thread - GADGET start-monitor-thread ; - -M:: <git-remote-gadget> ungraft* ( GADGET -- ) GADGET t >>closed drop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -:: git-remote-tool ( REPO -- ) - - <git-remote-gadget> new-gadget - - { 0 1 } >>orientation - 1 >>fill - - REPO >>repository - - "origin" >>remote - - "master" >>remote-branch - - 5 minutes >>fetch-period - - dup refresh-git-remote-gadget - - "git-remote-tool" open-window ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: factor-git-remote-tool ( -- ) "resource:" git-remote-tool ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -MAIN: factor-git-remote-tool \ No newline at end of file