1
0
mirror of synced 2026-03-09 20:48:19 +00:00

This fixes GITFNS prc not showing any changed files if they included .git in the full name.

GITFNS also ignored changed files at the top-level of the repo. This is fixed also.
This commit is contained in:
Matt Heffron
2024-06-10 18:48:53 -07:00
parent 2f6499317b
commit e7dccf76a9
2 changed files with 99 additions and 90 deletions

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "20-May-2024 22:13:04" {WMEDLEY}<lispusers>GITFNS.;530 131382
(FILECREATED "10-Jun-2024 18:43:43" {DSK}<home>matt>Interlisp>medley>LISPUSERS>GITFNS.;4 132087
:EDIT-BY rmk
:EDIT-BY "mth"
:CHANGES-TO (FNS GIT-PULL-REQUESTS)
:CHANGES-TO (FNS GIT-GET-PROJECT GIT-COMMAND-TO-FILE GIT-BRANCHES-COMPARE-DIRECTORIES)
:PREVIOUS-DATE "13-May-2024 19:31:18" {WMEDLEY}<lispusers>GITFNS.;529)
:PREVIOUS-DATE "10-Jun-2024 16:48:20" {DSK}<home>matt>Interlisp>medley>LISPUSERS>GITFNS.;3)
(PRETTYCOMPRINT GITFNSCOMS)
@@ -294,24 +294,24 @@
(* ; "Edited 13-May-2022 10:40 by rmk")
(* ; "Edited 9-May-2022 20:02 by rmk")
(* ; "Edited 8-May-2022 11:38 by rmk")
(CL:WHEN (SETQ PROJECT (IF (TYPE? GIT-PROJECT PROJECT)
THEN PROJECT
ELSEIF (CDR (ASSOC (OR (U-CASE PROJECT)
(CL:WHEN (SETQ PROJECT (if (type? GIT-PROJECT PROJECT)
then PROJECT
elseif (CDR (ASSOC (OR (U-CASE PROJECT)
GIT-DEFAULT-PROJECT)
GIT-PROJECTS))
ELSEIF NOERROR
THEN NIL
ELSE (ERROR "NOT A GIT-PROJECT" PROJECT)))
elseif NOERROR
then NIL
else (ERROR "NOT A GIT-PROJECT" PROJECT)))
(SELECTQ FIELD
(PROJECTNAME (FETCH PROJECTNAME OF PROJECT))
(WHOST (FETCH WHOST OF PROJECT))
(GITHOST (FETCH GITHOST OF PROJECT))
(EXCLUSIONS (FETCH EXCLUSIONS OF PROJECT))
(PROJECTNAME (fetch PROJECTNAME of PROJECT))
(WHOST (fetch WHOST of PROJECT))
(GITHOST (fetch GITHOST of PROJECT))
(EXCLUSIONS (fetch EXCLUSIONS of PROJECT))
(DEFAULTSUBDIRS
(FETCH DEFAULTSUBDIRS OF PROJECT))
(CLONEPATH (FETCH CLONEPATH OF PROJECT))
(MAINBRANCH [OR (FETCH MAINBRANCH OF PROJECT)
(REPLACE MAINBRANCH OF PROJECT WITH (OR (GIT-BRANCH-EXISTS? 'origin/main
(fetch DEFAULTSUBDIRS of PROJECT))
(CLONEPATH (fetch CLONEPATH of PROJECT))
(MAINBRANCH [OR (fetch MAINBRANCH of PROJECT)
(replace MAINBRANCH of PROJECT with (OR (GIT-BRANCH-EXISTS? 'origin/main
T PROJECT)
(GIT-BRANCH-EXISTS?
'origin/master NIL PROJECT
@@ -1078,6 +1078,8 @@
(GIT-BRANCH-DIFF
[LAMBDA (BRANCH1 BRANCH2 PROJECT)
(* ;; "Edited 10-Jun-2024 16:43 by mth")
(* ;; "Edited 2-May-2024 11:28 by mth")
(* ;; "Edited 29-Sep-2022 10:52 by rmk")
@@ -1117,10 +1119,10 @@
(SETQ RLINES NIL)
(CL:WHEN (LISTP RESULTFILE)
(SETQ ERRORFILE (CADR RESULTFILE))
(SETQ ELINES (GIT-RESULT-TO-LINES ERRORFILE))
(SETQ ELINES (GIT-RESULT-TO-LINES ERRORFILE T))
(DELFILE ERRORFILE)
(SETQ RESULTFILE (CAR RESULTFILE)))
(SETQ RLINES (GIT-RESULT-TO-LINES RESULTFILE))
(SETQ RLINES (GIT-RESULT-TO-LINES RESULTFILE T))
(DELFILE RESULTFILE)
(CL:WHEN ELINES
(if [AND (STRPOS "warning: inexact rename detection was skipped due to too many files."
@@ -1141,30 +1143,32 @@
(GO RETRY))
(ERROR "Incomplete branch differences" (LIST BRANCH1 BRANCH2)))
else (for L in ELINES do (PRINTOUT T L T))))
(RETURN (SORT (for L in RLINES
(RETURN (SORT (for (L FN) in RLINES
collect (SELCHARQ (CHCON1 L)
(A (CL:IF (EQ (CHARCODE TAB)
(NTHCHARCODE L 2))
(LIST 'ADDED (SUBSTRING L 3))
(LIST 'ADDED (SETQ FN (SUBSTRING L 3)))
(ERROR "ADDED NOT RECOGNIZED" L)))
(D (CL:IF (EQ (CHARCODE TAB)
(NTHCHARCODE L 2))
(LIST 'DELETED (SUBSTRING L 3))
(LIST 'DELETED (SETQ FN (SUBSTRING L 3)))
(ERROR "DELETED NOT RECOGNIZED" L)))
(M (CL:IF (SETQ POS (STRPOS " " L))
(LIST 'CHANGED (SUBSTRING L (ADD1 POS)))
[LIST 'CHANGED (SETQ FN (SUBSTRING L (ADD1 POS]
(ERROR "CHANGED NOT RECOGNIZED" L)))
(C (if (AND (EQ (CHARCODE TAB)
(NTHCHARCODE L 5))
(SETQ POS (STRPOS " " L 7)))
then (LIST 'COPIED (SUBSTRING L 6 (SUB1 POS))
then (LIST 'COPIED (SETQ FN (SUBSTRING L 6
(SUB1 POS)))
(OR (FIXP (SUBATOM L 2 4))
(HELP "C without a number" L)))
else (HELP "COPY NOT RECOGNIZED" L)))
(R (if (AND (EQ (CHARCODE TAB)
(NTHCHARCODE L 5))
(SETQ POS (STRPOS " " L 7)))
then (LIST 'RENAMED (SUBSTRING L 6 (SUB1 POS))
then (LIST 'RENAMED (SETQ FN (SUBSTRING L 6
(SUB1 POS)))
(SUBSTRING L (ADD1 POS))
(OR (FIXP (SUBATOM L 2 4))
(HELP "R without a number" L)))
@@ -1175,7 +1179,8 @@
" Ignore remaining files? "
)))
(ERROR!)))
(HELP "Unrecognized git-diff code " L)))
(HELP "Unrecognized git-diff code " L))
unless (STREQUAL ".git/" (SUBSTRING FN 1 5)))
T])
(GIT-COMMIT-DIFFS
@@ -1816,7 +1821,8 @@
(LIST DIR1 DIR2 MAPPINGS))])
(GIT-BRANCHES-COMPARE-DIRECTORIES
[LAMBDA (BRANCH1 BRANCH2 LOCAL PROJECT) (* ; "Edited 1-May-2024 14:58 by rmk")
[LAMBDA (BRANCH1 BRANCH2 LOCAL PROJECT) (* ; "Edited 10-Jun-2024 18:42 by mth")
(* ; "Edited 1-May-2024 14:58 by rmk")
(* ; "Edited 26-Sep-2023 22:40 by rmk")
(* ; "Edited 10-Jun-2023 17:28 by rmk")
(* ; "Edited 12-Sep-2022 14:41 by rmk")
@@ -1825,23 +1831,26 @@
(* ; "Edited 9-May-2022 15:14 by rmk")
(* ; "Edited 3-May-2022 23:04 by rmk")
(SETQ PROJECT (GIT-GET-PROJECT PROJECT))
(SETQ BRANCH1 (IF BRANCH1
THEN (GITORIGIN BRANCH1 LOCAL)
ELSE (GIT-WHICH-BRANCH PROJECT)))
(SETQ BRANCH1 (if BRANCH1
then (GITORIGIN BRANCH1 LOCAL)
else (GIT-WHICH-BRANCH PROJECT)))
(LET (CDVALUE DIRS NENTRIES MAPPINGS (SHORT1 (GIT-SHORT-BRANCH-NAME BRANCH1))
(SHORT2 (GIT-SHORT-BRANCH-NAME BRANCH2)))
(PRINTOUT T "Comparing all " (L-CASE (FETCH PROJECTNAME OF PROJECT)
(PRINTOUT T "Comparing all " (L-CASE (fetch PROJECTNAME of PROJECT)
T)
" subdirectories of " SHORT1 " and " SHORT2 T)
(PRINTOUT T "Fetching differences" T)
(SETQ DIRS (GIT-GET-DIFFERENT-FILES BRANCH1 BRANCH2 NIL NIL PROJECT))
(SETQ MAPPINGS (CADDR DIRS))
(IF DIRS
THEN (TERPRI T)
(if DIRS
then (TERPRI T)
(* ;; "INCLUDEDFILES parameter to COMPAREDIRECTORIES needs to allow both top-level files, and leading dot filenames.")
[SETQ CDVALUE (COMPAREDIRECTORIES (CAR DIRS)
(CADR DIRS)
'(> < ~= -* *-)
'*>*.*
'(*.* *>*.* .* *>.*)
(GIT-GET-PROJECT PROJECT 'EXCLUSIONS)
NIL NIL NIL NIL (LIST (PACKFILENAME 'HOST NIL 'BODY
(CAR DIRS))
@@ -1857,30 +1866,30 @@
(FUNCTION (LAMBDA (CDE)
(DECLARE (USEDFREE INFO1 INFO2))
(LET [(MAP (CL:UNLESS INFO2
(FIND M IN MAPPINGS
SUCHTHAT (STRING.EQUAL (CAR M)
(FETCH (CDINFO FULLNAME)
OF INFO1)
(find M in MAPPINGS
suchthat (STRING.EQUAL (CAR M)
(fetch (CDINFO FULLNAME)
of INFO1)
FILEDIRCASEARRAY)))]
(CL:WHEN MAP
(HELP 'MAP MAP))
(CL:WHEN INFO1
(CHANGE (FETCH (CDINFO FULLNAME) OF INFO1)
(change (fetch (CDINFO FULLNAME) of INFO1)
(SLASHIT (PACKFILENAME.STRING 'VERSION NIL
'BODY DATUM)
T)))
(CL:WHEN INFO2
(CHANGE (FETCH (CDINFO FULLNAME) OF INFO2)
(change (fetch (CDINFO FULLNAME) of INFO2)
(SLASHIT (PACKFILENAME.STRING 'VERSION NIL
'BODY DATUM)
T)))
(IF MAP
THEN
(if MAP
then
(* ;; "This handles renames and copies. We want the nominal source of a rename to be in the first column, even though the target location is the one that was fetched.")
(REPLACE (CDENTRY INFO2) OF CDE
WITH (CREATE CDINFO
(replace (CDENTRY INFO2) of CDE
with (create CDINFO
FULLNAME _ (CADR MAP)
DATE _ (CL:IF (EQ 'R (CADDR MAP))
" <-"
@@ -1889,27 +1898,27 @@
AUTHOR _ ""
TYPE _ ""
EOL _ ""))
(REPLACE (CDENTRY DATEREL) OF CDE
WITH (CADDR MAP]
(replace (CDENTRY DATEREL) of CDE
with (CADDR MAP]
(TERPRI T)
(IF (FETCH (CDVALUE CDENTRIES) OF CDVALUE)
THEN (SETQ LAST-BRANCH-CDVALUE CDVALUE)
(CDBROWSER CDVALUE (CONCAT (L-CASE (FETCH PROJECTNAME OF PROJECT)
(if (fetch (CDVALUE CDENTRIES) of CDVALUE)
then (SETQ LAST-BRANCH-CDVALUE CDVALUE)
(CDBROWSER CDVALUE (CONCAT (L-CASE (fetch PROJECTNAME of PROJECT)
T)
" " SHORT1 " vs " SHORT2 " "
(LENGTH (FETCH (CDVALUE CDENTRIES) OF CDVALUE))
(LENGTH (fetch (CDVALUE CDENTRIES) of CDVALUE))
" files")
(LIST SHORT1 SHORT2)
`(LABELFN GIT-CD-LABELFN BRANCH1 ,BRANCH1 BRANCH2 ,BRANCH2 PROJECT
,PROJECT)
GIT-CDBROWSER-SEPARATE-DIRECTIONS
`(Compare See))
(SETQ NENTRIES (LENGTH (FETCH (CDVALUE CDENTRIES) OF CDVALUE)))
(SETQ NENTRIES (LENGTH (fetch (CDVALUE CDENTRIES) of CDVALUE)))
(LIST NENTRIES (CL:IF (EQ NENTRIES 1)
'difference
'differences))
ELSE '(0 differences))
ELSE '(0 differences])
else '(0 differences))
else '(0 differences])
(GIT-WORKING-COMPARE-DIRECTORIES
[LAMBDA (SUBDIRS SELECT EXCLUDEDFILES FIXDIRECTORYDATES UPDATE PROJECT)
@@ -2338,7 +2347,7 @@
(RESULTFILE (CONCAT "{UNIX}/tmp/" PROJECTNAME "-" DATE "-" RAND "-result"))
(ERRORFILE (CONCAT "{UNIX}/tmp/" PROJECTNAME "-" DATE "-" RAND "-error"))
COMPLETIONCODE)
[SETQ COMPLETIONCODE (PROCESS-COMMAND (CONCAT (CDGITDIR PROJECT)
[SETQ COMPLETIONCODE (PROCESS-COMMAND (CONCAT (CDGITDIR PROJECT)
CMD " > " (STRIPHOST RESULTFILE)
" 2> "
(STRIPHOST ERRORFILE]
@@ -2365,12 +2374,12 @@
(FILEPOS "unknown command %"" ESTREAM 0 1)))
(FILEPOS "' is not a git command." ESTREAM (NCHARS CMD)))
(SETQ COMPLETIONCODE 1))))
(IF (EQ 0 COMPLETIONCODE)
THEN (IF (AND RESULTFILE ERRORFILE)
THEN (LIST RESULTFILE ERRORFILE)
ELSEIF RESULTFILE
ELSE ERRORFILE)
ELSE (DELFILE RESULTFILE)
(if (EQ 0 COMPLETIONCODE)
then (if (AND RESULTFILE ERRORFILE)
then (LIST RESULTFILE ERRORFILE)
elseif RESULTFILE
else ERRORFILE)
else (DELFILE RESULTFILE)
(DELFILE ERRORFILE)
(CL:UNLESS NOERROR
(ERROR (CONCAT "Command failed: " CMD)))
@@ -2402,33 +2411,33 @@
(PUTPROPS GITFNS FILETYPE :TCOMPL)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (4187 20766 (GIT-CLONEP 4197 . 5525) (GIT-INIT 5527 . 6157) (GIT-MAKE-PROJECT 6159 .
13824) (GIT-GET-PROJECT 13826 . 15751) (GIT-PUT-PROJECT-FIELD 15753 . 17394) (GIT-PROJECT-PATH 17396
. 18440) (FIND-ANCESTOR-DIRECTORY 18442 . 18791) (GIT-FIND-CLONE 18793 . 19874) (GIT-MAINBRANCH 19876
. 20271) (GIT-MAINBRANCH? 20273 . 20764)) (26229 30851 (PRC-COMMAND 26239 . 30849)) (30907 33695 (
ALLSUBDIRS 30917 . 32203) (MEDLEYSUBDIRS 32205 . 32898) (GITSUBDIRS 32900 . 33693)) (33696 38486 (
TOGIT 33706 . 35112) (FROMGIT 35114 . 36095) (GIT-DELETE-FILE 36097 . 36943) (MYMEDLEY-DELETE-FILES
36945 . 38484)) (38487 41490 (MYMEDLEYSUBDIR 38497 . 38953) (GITSUBDIR 38955 . 39398) (STRIPDIR 39400
. 39771) (STRIPHOST 39773 . 40013) (STRIPNAME 40015 . 40768) (STRIPWHERE 40770 . 41488)) (41491 43393
(GFILE4MFILE 41501 . 41864) (MFILE4GFILE 41866 . 42435) (GIT-REPO-FILENAME 42437 . 43391)) (43442
53693 (GIT-COMMIT 43452 . 44278) (GIT-PUSH 44280 . 45040) (GIT-PULL 45042 . 45794) (GIT-APPROVAL 45796
. 46145) (GIT-GET-FILE 46147 . 48169) (GIT-FILE-EXISTS? 48171 . 48445) (GIT-REMOTE-UPDATE 48447 .
49171) (GIT-REMOTE-ADD 49173 . 49480) (GIT-FILE-DATE 49482 . 50529) (GIT-FILE-HISTORY 50531 . 52465) (
GIT-PRINT-FILE-HISTORY 52467 . 53517) (GIT-FETCH 53519 . 53691)) (53723 64496 (GIT-BRANCH-DIFF 53733
. 60133) (GIT-COMMIT-DIFFS 60135 . 60808) (GIT-BRANCH-RELATIONS 60810 . 64494)) (64541 82978 (
GIT-BRANCH-NUM 64551 . 65124) (GIT-CHECKOUT 65126 . 66301) (GIT-WHICH-BRANCH 66303 . 66601) (
GIT-MAKE-BRANCH 66603 . 68932) (GIT-BRANCHES 68934 . 71424) (GIT-BRANCH-EXISTS? 71426 . 72297) (
GIT-PICK-BRANCH 72299 . 72789) (GIT-BRANCH-MENU 72791 . 73672) (GIT-BRANCH-WHENSELECTEDFN 73674 .
75839) (GIT-PULL-REQUESTS 75841 . 79359) (GIT-SHORT-BRANCH-NAME 79361 . 79652) (GIT-LONG-NAME 79654 .
79971) (GIT-PRC-BRANCHES 79973 . 82976)) (83008 86343 (GIT-MY-CURRENT-BRANCH 83018 . 83388) (
GIT-MY-BRANCHP 83390 . 83895) (GIT-MY-NEXT-BRANCH 83897 . 84391) (GIT-MY-BRANCHES 84393 . 86341)) (
86389 90464 (GIT-ADD-WORKTREE 86399 . 88006) (GIT-REMOVE-WORKTREE 88008 . 88938) (GIT-LIST-WORKTREES
88940 . 89744) (WORKTREEDIR 89746 . 90462)) (90512 123216 (GIT-GET-DIFFERENT-FILES 90522 . 96946) (
GIT-BRANCHES-COMPARE-DIRECTORIES 96948 . 103801) (GIT-WORKING-COMPARE-DIRECTORIES 103803 . 109199) (
GIT-COMPARE-WORKTREE 109201 . 113179) (GITCDOBJBUTTONFN 113181 . 117671) (GIT-CD-LABELFN 117673 .
118755) (GIT-CD-MENUFN 118757 . 121197) (GIT-WORKING-COMPARE-FILES 121199 . 121819) (
GIT-BRANCHES-COMPARE-FILES 121821 . 122985) (GIT-PR-COMPARE 122987 . 123214)) (123286 131315 (CDGITDIR
123296 . 123983) (GIT-COMMAND 123985 . 125543) (GITORIGIN 125545 . 126242) (GIT-INITIALS 126244 .
126548) (GIT-COMMAND-TO-FILE 126550 . 130039) (GIT-RESULT-TO-LINES 130041 . 130648) (STRIPLOCAL 130650
. 131313)))))
(FILEMAP (NIL (4282 20861 (GIT-CLONEP 4292 . 5620) (GIT-INIT 5622 . 6252) (GIT-MAKE-PROJECT 6254 .
13919) (GIT-GET-PROJECT 13921 . 15846) (GIT-PUT-PROJECT-FIELD 15848 . 17489) (GIT-PROJECT-PATH 17491
. 18535) (FIND-ANCESTOR-DIRECTORY 18537 . 18886) (GIT-FIND-CLONE 18888 . 19969) (GIT-MAINBRANCH 19971
. 20366) (GIT-MAINBRANCH? 20368 . 20859)) (26324 30946 (PRC-COMMAND 26334 . 30944)) (31002 33790 (
ALLSUBDIRS 31012 . 32298) (MEDLEYSUBDIRS 32300 . 32993) (GITSUBDIRS 32995 . 33788)) (33791 38581 (
TOGIT 33801 . 35207) (FROMGIT 35209 . 36190) (GIT-DELETE-FILE 36192 . 37038) (MYMEDLEY-DELETE-FILES
37040 . 38579)) (38582 41585 (MYMEDLEYSUBDIR 38592 . 39048) (GITSUBDIR 39050 . 39493) (STRIPDIR 39495
. 39866) (STRIPHOST 39868 . 40108) (STRIPNAME 40110 . 40863) (STRIPWHERE 40865 . 41583)) (41586 43488
(GFILE4MFILE 41596 . 41959) (MFILE4GFILE 41961 . 42530) (GIT-REPO-FILENAME 42532 . 43486)) (43537
53788 (GIT-COMMIT 43547 . 44373) (GIT-PUSH 44375 . 45135) (GIT-PULL 45137 . 45889) (GIT-APPROVAL 45891
. 46240) (GIT-GET-FILE 46242 . 48264) (GIT-FILE-EXISTS? 48266 . 48540) (GIT-REMOTE-UPDATE 48542 .
49266) (GIT-REMOTE-ADD 49268 . 49575) (GIT-FILE-DATE 49577 . 50624) (GIT-FILE-HISTORY 50626 . 52560) (
GIT-PRINT-FILE-HISTORY 52562 . 53612) (GIT-FETCH 53614 . 53786)) (53818 64938 (GIT-BRANCH-DIFF 53828
. 60575) (GIT-COMMIT-DIFFS 60577 . 61250) (GIT-BRANCH-RELATIONS 61252 . 64936)) (64983 83420 (
GIT-BRANCH-NUM 64993 . 65566) (GIT-CHECKOUT 65568 . 66743) (GIT-WHICH-BRANCH 66745 . 67043) (
GIT-MAKE-BRANCH 67045 . 69374) (GIT-BRANCHES 69376 . 71866) (GIT-BRANCH-EXISTS? 71868 . 72739) (
GIT-PICK-BRANCH 72741 . 73231) (GIT-BRANCH-MENU 73233 . 74114) (GIT-BRANCH-WHENSELECTEDFN 74116 .
76281) (GIT-PULL-REQUESTS 76283 . 79801) (GIT-SHORT-BRANCH-NAME 79803 . 80094) (GIT-LONG-NAME 80096 .
80413) (GIT-PRC-BRANCHES 80415 . 83418)) (83450 86785 (GIT-MY-CURRENT-BRANCH 83460 . 83830) (
GIT-MY-BRANCHP 83832 . 84337) (GIT-MY-NEXT-BRANCH 84339 . 84833) (GIT-MY-BRANCHES 84835 . 86783)) (
86831 90906 (GIT-ADD-WORKTREE 86841 . 88448) (GIT-REMOVE-WORKTREE 88450 . 89380) (GIT-LIST-WORKTREES
89382 . 90186) (WORKTREEDIR 90188 . 90904)) (90954 123925 (GIT-GET-DIFFERENT-FILES 90964 . 97388) (
GIT-BRANCHES-COMPARE-DIRECTORIES 97390 . 104510) (GIT-WORKING-COMPARE-DIRECTORIES 104512 . 109908) (
GIT-COMPARE-WORKTREE 109910 . 113888) (GITCDOBJBUTTONFN 113890 . 118380) (GIT-CD-LABELFN 118382 .
119464) (GIT-CD-MENUFN 119466 . 121906) (GIT-WORKING-COMPARE-FILES 121908 . 122528) (
GIT-BRANCHES-COMPARE-FILES 122530 . 123694) (GIT-PR-COMPARE 123696 . 123923)) (123995 132020 (CDGITDIR
124005 . 124692) (GIT-COMMAND 124694 . 126252) (GITORIGIN 126254 . 126951) (GIT-INITIALS 126953 .
127257) (GIT-COMMAND-TO-FILE 127259 . 130744) (GIT-RESULT-TO-LINES 130746 . 131353) (STRIPLOCAL 131355
. 132018)))))
STOP

Binary file not shown.