From ed5884dbad72c0018bb82da123aea4643cd0334f Mon Sep 17 00:00:00 2001 From: mmeyer1 <76985692+LondonWizard@users.noreply.github.com> Date: Mon, 13 Oct 2025 06:34:25 -0700 Subject: [PATCH 1/5] Got tester to run --- GitHash.class | Bin 0 -> 7719 bytes GitHashTester.class | Bin 0 -> 3562 bytes WorkingDirectoryInfo.class | Bin 0 -> 2023 bytes git/INDEX | 3 +++ .../008eee1073f2cfbdac1be079e6bbea7037832695 | 1 + .../0bc2179e8827414a3bc71984585b4a9044945f4d | 3 +++ .../179acc793851176faa924288cb66af6cf9f99256 | 1 + .../70260c5719d16e1f1d7ce2168377eb52a32d438f | 1 + .../a91e5e5ee24e1cf52367bded740c0424a4b29cd7 | 1 + goofy_ahh/BEANS/dawg.txt | 1 + goofy_ahh/goofy_nahhh/snog/dog.txt | 1 + goofy_ahh/wow.txt | 1 + temp | 3 +++ 13 files changed, 16 insertions(+) create mode 100644 GitHash.class create mode 100644 GitHashTester.class create mode 100644 WorkingDirectoryInfo.class create mode 100644 git/objects/008eee1073f2cfbdac1be079e6bbea7037832695 create mode 100644 git/objects/0bc2179e8827414a3bc71984585b4a9044945f4d create mode 100644 git/objects/179acc793851176faa924288cb66af6cf9f99256 create mode 100644 git/objects/70260c5719d16e1f1d7ce2168377eb52a32d438f create mode 100644 git/objects/a91e5e5ee24e1cf52367bded740c0424a4b29cd7 create mode 100644 goofy_ahh/BEANS/dawg.txt create mode 100644 goofy_ahh/goofy_nahhh/snog/dog.txt create mode 100644 goofy_ahh/wow.txt create mode 100644 temp diff --git a/GitHash.class b/GitHash.class new file mode 100644 index 0000000000000000000000000000000000000000..be428475e5016f84fe65de8f911f04daf4af4b46 GIT binary patch literal 7719 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 GsQewb>0Q$R literal 0 HcmV?d00001 diff --git a/GitHashTester.class b/GitHashTester.class new file mode 100644 index 0000000000000000000000000000000000000000..99502bc304cb4b717182b9e5af02011b2bbcc440 GIT binary patch literal 3562 zcmbtWX;&N98GZ%?67t|h2FEy#BQL>#4GLhu2HUaN6|>kD1uuz{k>*Mo7-kgBh{Z|U zv~k;{OWLGM61uyK)4k~jN5?s*KcN32pZgDbdg?xRMnztDA0CU(BxAa^nw6)7(5&ECW!Ilsw3CZDmYt31 zwkId8J)z>D#H%{4mKEc+sf&UmHx8+IQf@?aVG38!ol&Dex9!4u7*F9y5KpU!N{Pm@ zt8>C}MS&VxLBvgS+%SbR>M83DIELdvoKW!$TDNeST&L19y|s&EwApvouwz%~sY`!_ zwmcL@8`^{DP;pAy+wT#wRfdG;rG{xq?42sQq~xxw;a(GYJHaqX(9f#qmg@(q5XwD6 zGmSe!522Sps3XtlQ_(NOa4<~_uGn-wk(o9ehhYfetZyM^d->o5F-RUCgOl!uaSrEY z{_G2ZX%gbmvB|OcXb6`SG{|3GGDxvu6(bmBPKhprJ8oK7=a_lFN8XyE2Xavpj#dRd5kG;QnT_^3SL1r;yKNYt&$L*>d#DqfaxtV^4=!<7(HD$-!N?9B>G6d14M zWW3w2zhnPtczZ!bSn(MZS+HE6Sk{)rh;5}ccfoLToUt-28IjhVN^$#PAuK9rpRipw znlsFd8`TNPIvv#w5p|4oF6sy~<#1D&8DVuv^rnhs$x%3E+9@vrUJ2SN@^ZPwCwq8m zc9{JmuIqDlxt&Cypdf)0UUOTbeJ3ejl{v^Uy_$6uP%L-2Jz{1E5hGkOURq+*km9?1_?u@o9*bLit6b<1` z6>rHP?`PMOj*eMwVSSF3tBW;Ry5CUoP07U(-CvXYhHwZ!or|a4qUQG-1%VM;r=dMl zh9zc-%PCQq(^4i^0?V3VG3DECZD*-{p5%|MrA6K~81NvzTh(R~vzt4zXIEOv9+K2TDUn|cNXlz5{t%=4wjc5pI6tGNVLxf@x!g1(rf<2 znY4?Aw2(za{R#h?@m0HIT&Xl{+pgmlw0!yCJ@xom7(d6oAbugk_)7&RDk)%CEB2Cz z`In2I`Qw_`=oP$Q9qqE9f9NDLh7JD2lx;5+^F!M?tyQpHo zF`}7fl3idZgkLMTHD0inqq5Yat0LuaJ?iA_qNzuDo8*h`V7R|;Kxn=F{i(A(&uV?$ zncn_Prn^_1?cthLsRLWSf(b^qBVV)!!>yC|#C=M+bo_cdN6Hn7h53gP%I{(g#I7B%WRK8ErU zCko!?D7U$Y27DXep`sKWE{h&0AsA6h*d2+;p@~BY2P(RUs10h?vQ>omf@y?`2*+j` zdxtv#p7SpEzehR$;h-g-t0NfW;z}q{sE4k@;--8d!Ob`@3WhIefLo;YHtFjqL3;=Rl=1jw(MleG8^m*y*>a0n@&Ylv$o#p@EP0vvahtiJ zZHe}Kn+URH1hLOXV3ZNi{1X2x`K=_aZ(gT)LGu}!&(eI3<_(%(WV$X9g0;o``}m+- zWq)Tq2MOPR%@JuFHThachZPllSm+OI-;oO?Yjo z313LR{q94&4h+`atyk_p`m`m`Qb*7&0rJ*K#60JX628Xi*YDO);Jr!?UL^)=}DJRN+6PJPjfbSnb?WZ!&5r69Yfm!oq* zY_MJZ14kb*OW9OuengQP{1`vsw~0afDV2WZ VjrYCrH~1ZQ!d(45{)j)L<=+K}R=)rM literal 0 HcmV?d00001 diff --git a/WorkingDirectoryInfo.class b/WorkingDirectoryInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..db532dc9b7e64841a41959975d24996816d4a5bc GIT binary patch literal 2023 zcmaJ?T~`}b6x}x&2noYy0ZSXSP{3r;6savOhC~pGL<7_Y!J@9kKn9pLBsep1iNC>L z;ER3hOCNMCNxO6{m(TtO|B0)*&mFa%9U z8`>3mADdsBQ$@3MFtxt>*xK_H+UM+&?PU~#vG`^f9SDaI(a{NAVPLE5Jh4j$OSVI7 z**VFU_R9*IcXDhg^yeCEdCws(CFi?!^vGfD&~y(w(5IlLBDjQs5C(M&;f-@LY6lfM zi>B*kO9ktj^?ilG*hTJmR#=90T)|a^uv^)6{h)%*#xLSU%ZQFQMN7xNU9{HBBTFc* z3B{C_&;n3?!JaYkx~y6m@nW zspBT5n5t_XTaM{j^iXJAg?OvvYWgdlU7T8Q9P=b+yIv}SY1|6oT?ueo;gaw7d5m8- zMw~`aa=WYJo+u1apjatCyr(0DIRec>p~>1>6QttXBKejK@9UVyf@$d1^AJ|a4grVty1x92ss97G}WTd zXzmv2>TC`Fg*K#&$q+NN>+v%qq;E(NeGNnVp88bFE7tx+D2=#o4n&CPlTX)J>@nMp@DT6h7w55|HPD4^BXC zzCZK!_%m;xKl6fc)`@S!D#tahj-YV`%o;DCjKnEI#*I^SCHs4;=%3My>GK604_aVu4yoUkq^X}F| zr+w+bfZ+!VJVjgJx$zP=s(9x)nF2m*H-h}Wj0lFwdle733PMQ;-fe;;i|-gzOlg?yDw4LY=7)uz@5lXLOc8fdds1apO5_V=M^X%_G`7_t@YvM=J)FMwZ z1aOU6jWW7qah*EGIZiN(N!&#Y3yAxQIuUq5MQ?z(3n)>tkw)yd_wBb z9KDkIM2#xa3H}w*(eKg2Rfelf6(2m0Hfq`L7io!Z-e-3#^FP3f?;c(F3s=OTO>EVf zZ<9Gd=DvTKpCY6^gBEPi)y!M Date: Sun, 12 Oct 2025 06:43:45 -0700 Subject: [PATCH 2/5] Documented bug in tree functionality --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index f33e26e..f2d1322 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,9 @@ I meant working list here but I'm too lazy to change it now. Creates a priority **convertNestedDirs()** Using a priority queue of sorted based on file depths, adds folders in the same path to an arraylist and then converts all those folders into a tree object. repeats until Priority Queue is used up and all folders have been stored. +**Max's Note About Tree Functionality** +When running the tester prior to my fixes, it would create trees for all files but not make a final "Working Directory" with the root tree and its hash in it. + **convertContentsToString()** takes tree info (generally longer form info that has different lines / multiple data poibts) and turns into a string From 1e229e552a23092c562c8005a9530dfde2eaf87a Mon Sep 17 00:00:00 2001 From: mmeyer1 <76985692+LondonWizard@users.noreply.github.com> Date: Sun, 12 Oct 2025 06:48:45 -0700 Subject: [PATCH 3/5] Fixed the working list bugs --- GitHash.class | Bin 7719 -> 7931 bytes GitHash.java | 23 ++++++++++++++++++----- git/objects/workingList | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 git/objects/workingList diff --git a/GitHash.class b/GitHash.class index be428475e5016f84fe65de8f911f04daf4af4b46..e866913942ca4975cf38606e35daede83599e483 100644 GIT binary patch delta 2429 zcmaJ@S#VqB75+Y1@|C44S(a=qacs+$92?2Dk~nd2h@l~I2#)Q9Y>pcsh(tJw*V=+4 zl*W)kVA$dBOFGQJ3zIi+W*FIx+pslVXdB>x>9n-?g((koVTLVn?3i<}MIsL~eK}YE zJ?H<9jB2Or`o& z%-I^6p<8D$UJ3*XzVN(yo{V2m|=y^N<1bueW}c@%%~vjNM;Tjv4wS3vqoKZt|*GK zR^tktb*f&EY>x5>Pb%{?^jcvO)HKP zg$y?(=&nx!aee~2$nenHPkwp4^wsxrX>$zg_zd~M7==71ft>pL42Kqi25RNBMPs? z2&@r^wGw5ECV8Fr)m0nu*}*yZCBA%H?7?2swy^YJv3Fwtn_ zQVQ!F0+NXPDx4bcBrlWsR&Q6Ta)sqX7it%-bF`~iQI=D$N#h5E$D z^!s_=|B*&VLneM&BHdW%2DVk(tJ9?G z)+h$cC-FrVU-rbN@ZMQ7DkIYt>097!Xm|(3co*fkAVctbv`U^^@h9w%xO*h>eRv=D z-~(jvA&%iAb4Wa}&LgUgV^+gVr1&zbevo)lhFf;IQ511=8WuD0J<}MJjE6fVtE#Ss zUok?_t(PD5gk;$rZ_F}&j!i%oCwh!iV##UsIj&vQomqHyZ#;{WS+-1EOR7@R0sbbX z`#Zw;7)|&GHsGJ=z$fUE?Q9fGR?0kF8f28Bv$!Q!sCy;ejk!VWFR!q-cE-;aUSOMg zzP#Mudj2%38Y)&72&22?X$@JYc#C?weBJo1Qw(%BPE501=)P@|x4(HUm@TpufKSEY zzoer-6NW!W1pk(y{*SQyUu?wxunk|x{C|nN@D&c>YYgEVVfk~Mz!jXr9G;Nxtr2uN zY*$gC@u0>w*&*wsr)N@(AZKQ*d#2I(Kcf_ZMY;;T*Oe-;u4hb zkLDV`B{s#5&S}*4N|C$N!HTAFqZiGx(F>b2jE|*Q#xlg^`@fO_tl=`#lM|fBn#H}e zBw_iRkn6H8achikt>M7O?n%^%uT8zvXzz_ra>pb(x*BAxx*D?BVN3$K^C5YdpA?4S zWHriJgD@kAGMeY5fGM%F@ILm*^F~STuv{K8<%lUqO_?#}1ExG?$_GvPkSR~_VY%&) Mn~(74d<>!Q0KR delta 2339 zcmaJ@Yfw~m6#t!laCeux3(Eq#yp|P0a2Hqv0w0i?Np;2h~>(nBK(heG1lzgbX{OcI&Yn8l;|lWR>DvdNS} zsp?SjniXj>IZ#Eg?(GXkl#P9g(hv+OCdyzh5k9e7a?0ewQ;g|UA{!!o!Jf|bfyhq5 zoGnuh<*McKT(g_<~Oj#3LOv`D7KXeFffM*^Kn+p6Zql{>qSBCB9xS925Pr8BYP=V zSL;GB>|foya$vjC8wrMcOmw$;$Xb=W1SP_9rA!U#d8w9&WT60UlW4n)O6pKAr+nbu!7-3$S*TA5bPRe{4sgi*CfX^=8;tnFTDSZCWTIW_ z52b zEA#Jh`V+k08}~lq^v+^?mXmr84m{62eIbGEzBrrJRmp5iUHP-w@DAS9^6hi&WbL;u z|B%Qf9fnCbIT2e7$r5cKx(as!Ys(BPW9P-k&^&@uYrP{leR~vb&@$J<~<%lX1#0fF;s@|8uYXp~BTC?0DQr+Epd(oyoy=nhYx@I~=Nlq!yB4#kAJ zc|~)~pL1uvfCpcq9ABXhUt1*-(UTJGyu5^qU6$IA;^8>;g;d8VpH z-+0nVs#T|Rax$yN4FAbmrpL~P{<$l`DEa786g(Z2HyW7E|=I^sW5U_T19KcvZ}kv zx7tjO{F$Z5u)XmSuknu1ipDV%wfjct9`&=l@}XOOBP)z#gM(6ducyLCc2rOrs` convertIndexToWorkingDirectory // Goes through dirs in priority order (as mentioned above) and converts the contents into object public static void convertNestedDirs(PriorityQueue wd) throws IOException { - if (wd.peek().size() != -1) { + if (!wd.isEmpty()) { ArrayList nestedFolders = new ArrayList<>(); nestedFolders.add(wd.poll()); WorkingDirectoryInfo currFolder = nestedFolders.get(0); - while (wd.peek() != null && wd.peek().isInSameFolder(currFolder)) { + while (!wd.isEmpty() && wd.peek().isInSameFolder(currFolder)) { nestedFolders.add(wd.poll()); } - String hash = writeTreeFile(convertContentsToString(nestedFolders)); - wd.add(new WorkingDirectoryInfo("tree", hash, currFolder.getStringPath())); - convertNestedDirs(wd); + if (currFolder.size() == -1) { + writeWorkingListFile(convertContentsToString(nestedFolders)); + return; + } else { + String hash = writeTreeFile(convertContentsToString(nestedFolders)); + wd.add(new WorkingDirectoryInfo("tree", hash, currFolder.getStringPath())); + convertNestedDirs(wd); + } } } @@ -278,4 +283,12 @@ public static String writeTreeFile(String contents) throws IOException { } + // writes the final working list to a file named "workingList" + public static void writeWorkingListFile(String contents) throws IOException { + File workingListFile = new File("./git/objects/workingList"); + BufferedWriter bw = new BufferedWriter(new FileWriter(workingListFile)); + bw.write(contents); + bw.close(); + } + } diff --git a/git/objects/workingList b/git/objects/workingList new file mode 100644 index 0000000..b7a6bf2 --- /dev/null +++ b/git/objects/workingList @@ -0,0 +1 @@ +tree 0bc2179e8827414a3bc71984585b4a9044945f4d goofy_ahh \ No newline at end of file From 52d594e4b1e2e05aea796685570d7dde1e9cb4a0 Mon Sep 17 00:00:00 2001 From: mmeyer1 <76985692+LondonWizard@users.noreply.github.com> Date: Sun, 12 Oct 2025 07:03:19 -0700 Subject: [PATCH 4/5] Got commits working --- GitHash.class | Bin 7931 -> 8772 bytes GitHash.java | 41 ++++++++++++++++++ GitHashTester.class | Bin 3562 -> 3691 bytes GitHashTester.java | 1 + README.md | 5 ++- git/HEAD | 1 + .../a2fd0600daef89a553a9f4489c72b8bcc069e975 | 5 +++ temp | 8 ++-- 8 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 git/objects/a2fd0600daef89a553a9f4489c72b8bcc069e975 diff --git a/GitHash.class b/GitHash.class index e866913942ca4975cf38606e35daede83599e483..03bc11f97f9f26ce77ff67bdda88286f3bf849a1 100644 GIT binary patch delta 2774 zcmaJ@ZBSI_6@Ct|+`9`bAB(^WuB(8;BCI08xG7r0M+mxx6j6zyuCm27ENj@+fK4PZ z#u%HgdX2_>XliWxqtlt%rn^K^|J0_9ZPRJ{qccsKG}BI}%}m;+Gq%PG_PH;s>`rG2 z!@2i;-}64_>pAE0pO(vQwky*YF9B$gZ(Ohy+sAeJlEBvB9Sp_1o$YJdY^atExzZ~e z1=&Nv;lbE$L1s;DmkndMrb(Y*?w-K@fHxK#jd^=Q;k`q_wm>Y{5g7>wV!CYMd3$@i z+wb?g2L{}ooxX6`7md0PxX1Wolg+5nWShXQK=yfJp&_q%-zNRYYNN_l2ZtmeKurIbdGGeZVs6Ie^^LwLH?E*o1uueBQzAei+6WL!r@TN_(6W7{iscz zmSdWHH5ZNYjBz#pvgbKLfwB zVCLM0X-$Lc7Sd49Rwk(_V;Q?OU!WwU768l+=ZD_=H>hC}YcGAOL^lU()#wT-J zj+DyE{uxZ8yyQOrY<@yS+e5Sm$%i4-W0+_WY7R4N52;9UkuimO4P$gRKh4XQWQ7tX zEh!a>u~Pf682eF&hg0?C;Up*Lmu_sGjpuP@_7M5_1X+0)ElaIu_v^R^tuk{v5gRO)}?ODs#oix`9%r%|4ABO%8}$ zgDcg7JTl`M>s*^`XzK*tS?ig=mD#4YBa_XC?~?x)$iMHUBH*WZmy;x7j5-Hjs51X^ z%>N&Y2>oACe&-p$mUtgdZzg zoL^JO)4*P_%m7j7xLz>jObJ5>u=20-x<|EI4?e9 zP5;SRaFw0*FAU({?2BuR>QfxV6j?frqaw;`IV{tdr^(}*v~ZrRVAZc<;dNL(r{UB# zERr^kT2^ejVyO0Z#W(?U(K(B)s1zHPNe(^Fg`ayplFx27=2i2~Tl4PeH1DW9NHHuj z2M#I0Tq#AJlwqkj(Igehqa4T-nr8Yo&4ZF;+jhE|RT|WImxaiYN|Z|#+)|AyS(J9? ziJ4X)Hx{tX?EKz@Cvm)Q5-0i`vOaH5B@lIP5G+RWoT9-H$ZL(JkIG^c@hP$YFIl_jiMJr+mapMDg~U delta 1941 zcmaJ>YfzMB6n@Ua@-2((!tS!mby-}XTm4*_A!8<>^Wj}+4KT?jV#l{_GVe7pR`|cwh8Plb=|ESTT8q8N^82p?Q`^# zDdn~WM&~AVqxD;q~pUZJT}bH+A(7^jqXHL2^geKxyCF?)G&9 z{iR}&e*H>nv24)u9P~r~xA}k!_2vic{4zjFbmNShZ zr4AK}`2|<)!pQxpu+YwCwsUy*E@m+oS-1z&QH?U(OO%ibZ-I=$%?ylaXu?v3)|a+@ zTLdjY9AF_aYsssQwX0`E9w3iJXy9`h?J6wBYBVa;8HgKao)+S2vQ$HxvOToI7F|Qh zIE!kUIE84~Gb#Ek@@DrK@hzD3UUy4bj6*XWm&1t_EMf~gu@dEsJe!egu!ihf$!M)K z=_78h)6iLIp1{mB|#C#!#$bGs)T~u?$8# zbjlMnbZ9+0)z3B$pa>g`_horhlcniP=f(2b#>#G|9(PcUgH+f~mTecA?8Z#&Vc(uc z2t$)_Rzx#7ogOg6eTJDl%S`sMF3(N6-x7_RlTmJ%h36S}KgFoCmoHEmFT#hHjD9$d zkCX-mGdc|#I6$s1Q%$dMie4q(*HDOq)Yj{){XweW5S8<$s+WTxahZENA7;{F;# zvIfpt{s`tqGg?dh>gY`Wnte!RRKvXhT%wA9rfz;=MweNy-&n8TnbjZM6MwR&e{mOF z;e`E-He5w7{$W;^u@yI{&QT0uTt&@-`6hBSS*J;m`(!4&K7y$uFkfe2;}|+5#8u0V z*}UOtw>lL3o7Suv-$xWm&> zByP+Q4=N>7F-n4rp>kqwCoynG$F@1QYD)x6t#|PuN%D{-Q{fXo@+IHk6DRGwXOf4d rgU>seQ73cgRrXP3*DE`q>_%lbDf@)7Pbs@qw$s~6&mFQ;b|d3or4}S{ diff --git a/GitHash.java b/GitHash.java index b3fa6a8..e52468a 100644 --- a/GitHash.java +++ b/GitHash.java @@ -8,9 +8,11 @@ import java.nio.file.Files; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Comparator; +import java.util.Date; import java.util.PriorityQueue; @@ -291,4 +293,43 @@ public static void writeWorkingListFile(String contents) throws IOException { bw.close(); } + // creates a commit file with author, message, root tree hash, and previous commit + public static void commit(String author, String message) throws IOException { + BufferedReader br = new BufferedReader(new FileReader("./git/objects/workingList")); + String rootTreeContent = br.readLine(); + br.close(); + String rootTreeHash = generateSHA1FromString(rootTreeContent); + String previousCommit = ""; + File headFile = new File("./git/HEAD"); + if (headFile.exists() && headFile.length() > 0) { + BufferedReader headReader = new BufferedReader(new FileReader(headFile)); + String headContent = headReader.readLine(); + headReader.close(); + if (headContent != null && !headContent.trim().isEmpty()) { + File previousCommitFile = new File("./git/objects/" + headContent.trim()); + if (previousCommitFile.exists()) { + previousCommit = headContent.trim(); + } + } + } + + // https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html + SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy"); + String currentDate = sdf.format(new Date()); + StringBuilder commitContent = new StringBuilder(); + commitContent.append("tree: ").append(rootTreeHash).append("\n"); + commitContent.append("parent: ").append(previousCommit).append("\n"); + commitContent.append("author: ").append(author).append("\n"); + commitContent.append("date: ").append(currentDate).append("\n"); + commitContent.append("message: ").append(message); + String commitHash = generateSHA1FromString(commitContent.toString()); + File commitFile = new File("./git/objects/" + commitHash); + BufferedWriter commitWriter = new BufferedWriter(new FileWriter(commitFile)); + commitWriter.write(commitContent.toString()); + commitWriter.close(); + BufferedWriter headWriter = new BufferedWriter(new FileWriter("./git/HEAD")); + headWriter.write(commitHash); + headWriter.close(); + } + } diff --git a/GitHashTester.class b/GitHashTester.class index 99502bc304cb4b717182b9e5af02011b2bbcc440..e8c7371c43b3f2d145b8d72a8c56ff02fb3f639e 100644 GIT binary patch literal 3691 zcmbtWX?GLX8Ggo_WHH7;*aWjUV^*8R!Uo&aW|MapFMu4(mXML=N*a4K<7&nm*=Wn@ z>6*6bl7#MbA>Es_1(lrBAJBi1&;18IJ*Cf`5tdvl?S~%B+^c)v<+;zh-21nGJ^3qu zv-nE{Rj3Z3Mnx^^6g)StFY7T&w==Ps^v zrZ=v;Sp`igOXzl>?sAW@9VPN~gE#Nh6Iap2Id8)eS>I zbNgh;al*@+c4naCY8cxU>@2Adj>M-EF+*R;NGoA9E7(`s4Q4j|WMi)FWMYQn%Sms~ ztJo>=s;;MJ#HeE#BJYN=OF?5o&n*c{8x(n4&l^q{dla-z@WiHWX(=a{Gd*p^^s<^K zTu)1zmT;xTRuwNmBRheJg2NS#Q0Y)od7p~?5>C_*mhc2g95(YL+sUs*a1e(=IIN;w zN;DJ+o~3h}zm=~pnWlQWmDte{lmW=6L5sQwbN`gME;!|>cM;XE* zjpiL;gfT!M)R8vMsyHWuzcWP)o>)KpM0(0}T?Rjl3xS82<7c58!XTsf44gcE1aS<@ ztlbvIsDdy}$HqtE!(ogosF%O|6qI70R&f!NjFnh5UC;G1`9>Ji3R=je=98(#^Fk}b zD|xvjNul{GW%<()eYg%bf zGYH8(rWvNtTr-u`Twx_yrdeU7h21I9dn%SBN0FrEB>f2Z^}C{CRW7##WDicx46yXvmHla=BAV9~Ac8k>H-yis_#8g3U~8$7P3ayxV_jai4M&z?d&h9y zg}J*V1gN`kA(%wjfWIW&e7SND8LHq|CiPcUd<}20HZ#JT)^ma_xV@ri7~fFwO&R3v z?6vZsBes`cn`Px1VpW#zw^V#va?xr8YjWQdF5#!L@sziu2mMAt&5&czQRAd(i|M6Y zQsig#q{Wq*oNn4o`SzQeW7ff1h>WbJ#G+?1;30gktj$c!tnbL1qSR8JHN1v|r>7RC z^u?m5CRsUSn-X!G;mDIs2`}py?wpffV9}WJfW@U}_G;TFCOWQ$@Y9W*(!X+uGvO@d zQ$iLI^~ZwCEl};0ai!9r<9M!@*B6V18|(0X1i!?uLin`|<8KrkD5ZdDFFOk&7F=mT z=8x)rqgU{5dCnIF1Eb^27&iC=la8~nv^cPt)3TKfinD8rqJnsNRD$dtC{LB5i6Pyx z66^v4Vf;?P&C$G*(`2b@D8_LFbT=nGeWyfUDxK^Rr@JD-p^AELe?$r64{UQXl0MVHZT_KxDn((JpRn0xhAiE6 z1+(SP3Jz}Kvl2}qJZ1|2cTrYjz$x08_f>u+*0av}_Tl$C{JobWiyE~@9z*$n69wPp zS8j6=^>_#GQc;Rdag?ij3kXHk0=7n@^3%jm0Xw2C(cJ~?EtzOVh{E-#X2%Hg`P2Xv zQGT1T6?@Q%_qba_gZC-(eL4)BeC)db^a9!nIPf7l9wAo1sRH`SSEBs|ocV<1==q9! zzI4e>38;(Tzl z7`o`s&T}^D&qg?#@@He5O&@uLiTAMos6XsE<`2!s{b4I z-N$f%Xd@Ux6NY)V5uS3CvoXwIf_N|D2b9=>s;6A22_e4z2L`oXKGpso)b|6__u-?y z4Aw_D_r0+-p<`d+ABA%c^4v_~it`Rj*MM1hG#>@R=e4x_9}1S&pTo4crU5Pt$#d?z41n()~Q$FYt|Q5rVV9 z{g3gJVwL@!r7f$|sXn`B*8|K;6nmav4Un0|Bnr4VPA>XuqObMWR`=F5*X@3Q7g}ly zc%upT7Mk#d)LU;q!54x4+Iw}%!>1p&)U?zRbW06+J5I#3^OXX=>9tswnVIDF@FH zG>|6r8aqzXUBFE}*@Q^| literal 3562 zcmbtWX;&N98GZ%?67t|h2FEy#BQL>#4GLhu2HUaN6|>kD1uuz{k>*Mo7-kgBh{Z|U zv~k;{OWLGM61uyK)4k~jN5?s*KcN32pZgDbdg?xRMnztDA0CU(BxAa^nw6)7(5&ECW!Ilsw3CZDmYt31 zwkId8J)z>D#H%{4mKEc+sf&UmHx8+IQf@?aVG38!ol&Dex9!4u7*F9y5KpU!N{Pm@ zt8>C}MS&VxLBvgS+%SbR>M83DIELdvoKW!$TDNeST&L19y|s&EwApvouwz%~sY`!_ zwmcL@8`^{DP;pAy+wT#wRfdG;rG{xq?42sQq~xxw;a(GYJHaqX(9f#qmg@(q5XwD6 zGmSe!522Sps3XtlQ_(NOa4<~_uGn-wk(o9ehhYfetZyM^d->o5F-RUCgOl!uaSrEY z{_G2ZX%gbmvB|OcXb6`SG{|3GGDxvu6(bmBPKhprJ8oK7=a_lFN8XyE2Xavpj#dRd5kG;QnT_^3SL1r;yKNYt&$L*>d#DqfaxtV^4=!<7(HD$-!N?9B>G6d14M zWW3w2zhnPtczZ!bSn(MZS+HE6Sk{)rh;5}ccfoLToUt-28IjhVN^$#PAuK9rpRipw znlsFd8`TNPIvv#w5p|4oF6sy~<#1D&8DVuv^rnhs$x%3E+9@vrUJ2SN@^ZPwCwq8m zc9{JmuIqDlxt&Cypdf)0UUOTbeJ3ejl{v^Uy_$6uP%L-2Jz{1E5hGkOURq+*km9?1_?u@o9*bLit6b<1` z6>rHP?`PMOj*eMwVSSF3tBW;Ry5CUoP07U(-CvXYhHwZ!or|a4qUQG-1%VM;r=dMl zh9zc-%PCQq(^4i^0?V3VG3DECZD*-{p5%|MrA6K~81NvzTh(R~vzt4zXIEOv9+K2TDUn|cNXlz5{t%=4wjc5pI6tGNVLxf@x!g1(rf<2 znY4?Aw2(za{R#h?@m0HIT&Xl{+pgmlw0!yCJ@xom7(d6oAbugk_)7&RDk)%CEB2Cz z`In2I`Qw_`=oP$Q9qqE9f9NDLh7JD2lx;5+^F!M?tyQpHo zF`}7fl3idZgkLMTHD0inqq5Yat0LuaJ?iA_qNzuDo8*h`V7R|;Kxn=F{i(A(&uV?$ zncn_Prn^_1?cthLsRLWSf(b^qBVV)!!>yC|#C=M+bo_cdN6Hn7h53gP%I{(g#I7B%WRK8ErU zCko!?D7U$Y27DXep`sKWE{h&0AsA6h*d2+;p@~BY2P(RUs10h?vQ>omf@y?`2*+j` zdxtv#p7SpEzehR$;h-g-t0NfW;z}q{sE4k@;--8d!Ob`@3WhIefLo;YHtFjqL3;=Rl=1jw(MleG8^m*y*>a0n@&Ylv$o#p@EP0vvahtiJ zZHe}Kn+URH1hLOXV3ZNi{1X2x`K=_aZ(gT)LGu}!&(eI3<_(%(WV$X9g0;o``}m+- zWq)Tq2MOPR%@JuFHThachZPllSm+OI-;oO?Yjo z313LR{q94&4h+`atyk_p`m`m`Qb*7&0rJ*K#60JX628Xi*YDO);Jr!?UL^)=}DJRN+6PJPjfbSnb?WZ!&5r69Yfm!oq* zY_MJZ14kb*OW9OuengQP{1`vsw~0afDV2WZ VjrYCrH~1ZQ!d(45{)j)L<=+K}R=)rM diff --git a/GitHashTester.java b/GitHashTester.java index 9d4a116..ba2c36e 100644 --- a/GitHashTester.java +++ b/GitHashTester.java @@ -11,6 +11,7 @@ public static void main(String[] args) throws IOException { GitHash.add("goofy_ahh/BEANS/dawg.txt"); GitHash.add("goofy_ahh/goofy_nahhh/snog/dog.txt"); GitHash.stageFolders(); + GitHash.commit("Samuel Bernardo", "Initial commit with test files"); // PriorityQueue q = GitHash.convertIndexToWorkingDirectory(); // System.out.println(q.poll().size()); diff --git a/README.md b/README.md index f2d1322..3e1970b 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ I meant working list here but I'm too lazy to change it now. Creates a priority Using a priority queue of sorted based on file depths, adds folders in the same path to an arraylist and then converts all those folders into a tree object. repeats until Priority Queue is used up and all folders have been stored. **Max's Note About Tree Functionality** -When running the tester prior to my fixes, it would create trees for all files but not make a final "Working Directory" with the root tree and its hash in it. +When running the tester prior to my fixes, it would create trees for all files but not make a final "Working List" with the root tree and its hash in it. Fixed now **convertContentsToString()** takes tree info (generally longer form info that has different lines / multiple data poibts) and turns into a string @@ -98,6 +98,9 @@ stages ALL CONTENTS inside a folder NOT RELATED TO INDEX as trees in objects fol creates a filename based on hashed contents and then writes those contents into the a file in the objects folder. +**Commit Functionality** + +commit method in GitHash.java takes in the author of the commit and the commit message as strings. When called, it makes an up to date working list of the directory, and writes it to a file named as the hash of the commit file contents. The most recent commit is stored in the HEAD file, and each commit includes the previous commit's hash (so it can be found in the objects folder), leading up to the initial commit. --- (Sam's) NOTES TO SELF: diff --git a/git/HEAD b/git/HEAD index e69de29..22db70c 100644 --- a/git/HEAD +++ b/git/HEAD @@ -0,0 +1 @@ +a2fd0600daef89a553a9f4489c72b8bcc069e975 \ No newline at end of file diff --git a/git/objects/a2fd0600daef89a553a9f4489c72b8bcc069e975 b/git/objects/a2fd0600daef89a553a9f4489c72b8bcc069e975 new file mode 100644 index 0000000..3ab03a2 --- /dev/null +++ b/git/objects/a2fd0600daef89a553a9f4489c72b8bcc069e975 @@ -0,0 +1,5 @@ +tree: 9e00765445c7f8a55abf47df54880d9c454fe8ca +parent: +author: Samuel Bernardo +date: Sun Oct 12 06:59:32 PDT 2025 +message: Initial commit with test files \ No newline at end of file diff --git a/temp b/temp index e5eca2b..3ab03a2 100644 --- a/temp +++ b/temp @@ -1,3 +1,5 @@ -tree 179acc793851176faa924288cb66af6cf9f99256 goofy_nahhh -tree 008eee1073f2cfbdac1be079e6bbea7037832695 BEANS -blob 70260c5719d16e1f1d7ce2168377eb52a32d438f wow.txt \ No newline at end of file +tree: 9e00765445c7f8a55abf47df54880d9c454fe8ca +parent: +author: Samuel Bernardo +date: Sun Oct 12 06:59:32 PDT 2025 +message: Initial commit with test files \ No newline at end of file From f40794e769f62d3faa59c493b219bf118e3a0fa1 Mon Sep 17 00:00:00 2001 From: mmeyer1 <76985692+LondonWizard@users.noreply.github.com> Date: Sun, 12 Oct 2025 07:14:25 -0700 Subject: [PATCH 5/5] Implemented the final wrapper class --- GitHash.class | Bin 8772 -> 9329 bytes GitHash.java | 44 ++++++++++-- GitHashTester.class | Bin 3691 -> 3709 bytes GitTester.class | Bin 0 -> 1379 bytes GitTester.java | 24 +++++++ GitWrapper.class | Bin 0 -> 597 bytes GitWrapper.java | 64 ++++++++++++++++++ git/HEAD | 2 +- git/INDEX | 5 +- .../5cd696bcdcde35f53a3731745d10f3e46ac1370d | 5 ++ .../76f1f0fed543c6cf133d919e540df11e0cbbcbed | 5 ++ .../b245828b90464cecb0c07ee6e61491ee2dc0c00e | 1 + .../b29b66f5a083ef031a56ebb437e7f58f9b664744 | 1 + .../b34d976be64c07a6de9824d1ede86e66d1184112 | 2 + .../ea7b8499509da0261a19e48a8631a6a506f0de0a | 1 + git/objects/workingList | 2 +- myProgram/hello.txt | 1 + myProgram/inner/world.txt | 1 + temp | 8 +-- 19 files changed, 151 insertions(+), 15 deletions(-) create mode 100644 GitTester.class create mode 100644 GitTester.java create mode 100644 GitWrapper.class create mode 100644 GitWrapper.java create mode 100644 git/objects/5cd696bcdcde35f53a3731745d10f3e46ac1370d create mode 100644 git/objects/76f1f0fed543c6cf133d919e540df11e0cbbcbed create mode 100644 git/objects/b245828b90464cecb0c07ee6e61491ee2dc0c00e create mode 100644 git/objects/b29b66f5a083ef031a56ebb437e7f58f9b664744 create mode 100644 git/objects/b34d976be64c07a6de9824d1ede86e66d1184112 create mode 100644 git/objects/ea7b8499509da0261a19e48a8631a6a506f0de0a create mode 100644 myProgram/hello.txt create mode 100644 myProgram/inner/world.txt diff --git a/GitHash.class b/GitHash.class index 03bc11f97f9f26ce77ff67bdda88286f3bf849a1..a52c60ad1bb5efbfda812d1c59c848d600d50ffd 100644 GIT binary patch literal 9329 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 literal 8772 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 BV^{zH diff --git a/GitHash.java b/GitHash.java index e52468a..4e4d972 100644 --- a/GitHash.java +++ b/GitHash.java @@ -18,12 +18,16 @@ public class GitHash { - // Create directories - public static void gitRepoInit() throws IOException { + public static void init() throws IOException { GitHash.createDirectoryIfMissing("git"); GitHash.createDirectoryIfMissing("git/objects"); GitHash.createFileIfMissing("git/HEAD"); GitHash.createFileIfMissing("git/INDEX"); + } + + // Create directories + public static void gitRepoInit() throws IOException { + init(); System.out.println("Git Repository Created"); } @@ -52,8 +56,34 @@ public static void createFileIfMissing(String path) throws IOException { public static void add(String filePath) throws IOException { File f = new File(filePath); - createBLOBAndAddToObjects(f); - addBLOBEntryToIndex(filePath); + if (!f.exists()) { + throw new IOException("File does not exist: " + filePath); + } + if (f.isDirectory()) { + throw new IOException("Cannot add directory: " + filePath); + } + + if (!isFileInIndex(filePath)) { + createBLOBAndAddToObjects(f); + addBLOBEntryToIndex(filePath); + } + } + + public static boolean isFileInIndex(String filePath) throws IOException { + File indexFile = new File("git/INDEX"); + if (!indexFile.exists()) { + return false; + } + BufferedReader br = new BufferedReader(new FileReader(indexFile)); + String line; + while ((line = br.readLine()) != null) { + if (line.contains(" ./" + filePath)) { + br.close(); + return true; + } + } + br.close(); + return false; } public static String generateSHA1FromString(String contents) throws IOException { @@ -294,7 +324,8 @@ public static void writeWorkingListFile(String contents) throws IOException { } // creates a commit file with author, message, root tree hash, and previous commit - public static void commit(String author, String message) throws IOException { + public static String commit(String author, String message) throws IOException { + stageFolders(); BufferedReader br = new BufferedReader(new FileReader("./git/objects/workingList")); String rootTreeContent = br.readLine(); br.close(); @@ -321,7 +352,7 @@ public static void commit(String author, String message) throws IOException { commitContent.append("parent: ").append(previousCommit).append("\n"); commitContent.append("author: ").append(author).append("\n"); commitContent.append("date: ").append(currentDate).append("\n"); - commitContent.append("message: ").append(message); + commitContent.append("summary: ").append(message); String commitHash = generateSHA1FromString(commitContent.toString()); File commitFile = new File("./git/objects/" + commitHash); BufferedWriter commitWriter = new BufferedWriter(new FileWriter(commitFile)); @@ -330,6 +361,7 @@ public static void commit(String author, String message) throws IOException { BufferedWriter headWriter = new BufferedWriter(new FileWriter("./git/HEAD")); headWriter.write(commitHash); headWriter.close(); + return commitHash; } } diff --git a/GitHashTester.class b/GitHashTester.class index e8c7371c43b3f2d145b8d72a8c56ff02fb3f639e..de08edfa3e7a882367966f25708815d1954e78cf 100644 GIT binary patch delta 52 zcmV-40L%aD9Q_=yQvm@uk&zRVzy}MHo&*}RdjZM^2~Ge40096103MT02^;}elWGYj K0UfiE3EBj(AP$lM delta 48 zcmew>^IB#@Fe9V-#EHU_(;0;s!#4LYo?_?pWnf}pWME*BogB|8Gr5LSjZtRvV$NGE E0A9Nd9RL6T diff --git a/GitTester.class b/GitTester.class new file mode 100644 index 0000000000000000000000000000000000000000..22a559c88357e8611bc1fc7943bc43eb75c769bf GIT binary patch literal 1379 zcmaJ>>rN9v6#j-HyDTeU5fu?#6_pB7uXriqrN~8#m_RVbUqg4KBfC4B-6_x~@D+Rw z{eeakAHat)p6MDWX=9VlnK^sT`Q|&9`Tgg|F946R>Yxib3*9b`p@(7cBj4f0fJa-! z)yGI&&9??XMRYN;X~NZs(XNVQ3A zY#PG1FvHMGR_mk|301wUe8DhKk&$>^4>v`!&Nl%STpi4aR1Cfqbl-jPxrFJ$gnj?L9O1qx#5W4DPZSl5)V)R8TTsFDxUh~pye(d%M)HIdeVkwUic3>JFahjiDl;HW{uZ5# zyhHL3Y?>Z0z-q$v!NGueZEzf;v>V4DO-vp$7{VNB7w8cxk##p+aF#sgXy1h=cuLYH T-81?xVwp}3?OvjS*BJQ=UXEvP literal 0 HcmV?d00001 diff --git a/GitTester.java b/GitTester.java new file mode 100644 index 0000000..322b7e1 --- /dev/null +++ b/GitTester.java @@ -0,0 +1,24 @@ +import java.io.IOException; + +public class GitTester { + + public static void main(String args[]) throws IOException { + + GitHash.deleteGitDirectory(); + + GitWrapper gw = new GitWrapper(); + gw.init(); + + gw.add("myProgram/hello.txt"); + gw.add("myProgram/inner/world.txt"); + + String commitHash = gw.commit("John Doe", "Initial commit"); + System.out.println("Commit created with hash: " + commitHash); + + gw.add("myProgram/hello.txt"); + System.out.println("Duplicate add attempt - should not add again"); + + System.out.println("Git functionality test completed"); + } + +} \ No newline at end of file diff --git a/GitWrapper.class b/GitWrapper.class new file mode 100644 index 0000000000000000000000000000000000000000..61180f6ea4c3205df105fcde01532c0a4f049e84 GIT binary patch literal 597 zcmZvZO;5r=5Qg8iK(SUq5d{?@Hxy&9CVm}^UkQ-|M$b#xz#_Dy6ywj*lf;8Rz#nCt z0U{za+1cHh_nDcUetmy@0yst9!U7Bv5gSp&1d=WJES^JJFsF&jgI( z-h+iW7EM?-mRN3H>+nYQngS6Padg?n3KFE2^}0a1Se|68hJp4P$D=H(Hr9}$^se9O zXsUBGM>+?db(u&DSk%d5AiG@^P%{^PT?r)0+EaJ^PE7^(veqV#b@}3|Zm4~)XJShr zHEd4%&TZv4A`o|*%6;z3;V5acv}m$pu0S`|L`wtM|G^9a*(s1l oJqGi%8wAEm2LmKu>GZcbXNuaUa-$bzNyp`8UUN=@onbKd1H)5cI{*Lx literal 0 HcmV?d00001 diff --git a/GitWrapper.java b/GitWrapper.java new file mode 100644 index 0000000..d4f1a76 --- /dev/null +++ b/GitWrapper.java @@ -0,0 +1,64 @@ +import java.io.IOException; + +public class GitWrapper { + + /** + * Initializes a new Git repository. + * This method creates the necessary directory structure + * and initial files (index, HEAD) required for a Git repository. + */ + public void init() throws IOException { + GitHash.init(); + } + + /** + * Stages a file for the next commit. + * This method adds a file to the index file. + * If the file does not exist, it throws an IOException. + * If the file is a directory, it throws an IOException. + * If the file is already in the index, it does nothing. + * If the file is successfully staged, it creates a blob for the file. + * @param filePath The path to the file to be staged. + */ + public void add(String filePath) throws IOException { + GitHash.add(filePath); + } + + /** + * Creates a commit with the given author and message. + * It should capture the current state of the repository by building trees based on the index file, + * writing the tree to the objects directory, + * writing the commit to the objects directory, + * updating the HEAD file, + * and returning the commit hash. + * + * The commit should be formatted as follows: + * tree: + * parent: + * author: + * date: + * summary: + * + * @param author The name of the author making the commit. + * @param message The commit message describing the changes. + * @return The SHA1 hash of the new commit. + */ + public String commit(String author, String message) throws IOException { + return GitHash.commit(author, message); + } + + /** + * EXTRA CREDIT: + * Checks out a specific commit given its hash. + * This method should read the HEAD file to determine the "checked out" commit. + * Then it should update the working directory to match the + * state of the repository at that commit by tracing through the root tree and + * all its children. + * + * @param commitHash The SHA1 hash of the commit to check out. + */ + public void checkout(String commitHash) { + // to-do: implement functionality here + + }; +} \ No newline at end of file diff --git a/git/HEAD b/git/HEAD index 22db70c..b82ef5e 100644 --- a/git/HEAD +++ b/git/HEAD @@ -1 +1 @@ -a2fd0600daef89a553a9f4489c72b8bcc069e975 \ No newline at end of file +5cd696bcdcde35f53a3731745d10f3e46ac1370d \ No newline at end of file diff --git a/git/INDEX b/git/INDEX index d665a60..11ba5c9 100644 --- a/git/INDEX +++ b/git/INDEX @@ -1,3 +1,2 @@ -70260c5719d16e1f1d7ce2168377eb52a32d438f ./goofy_ahh/wow.txt -70260c5719d16e1f1d7ce2168377eb52a32d438f ./goofy_ahh/BEANS/dawg.txt -70260c5719d16e1f1d7ce2168377eb52a32d438f ./goofy_ahh/goofy_nahhh/snog/dog.txt +ea7b8499509da0261a19e48a8631a6a506f0de0a ./myProgram/hello.txt +b245828b90464cecb0c07ee6e61491ee2dc0c00e ./myProgram/inner/world.txt diff --git a/git/objects/5cd696bcdcde35f53a3731745d10f3e46ac1370d b/git/objects/5cd696bcdcde35f53a3731745d10f3e46ac1370d new file mode 100644 index 0000000..93887e9 --- /dev/null +++ b/git/objects/5cd696bcdcde35f53a3731745d10f3e46ac1370d @@ -0,0 +1,5 @@ +tree: d8259ac2dd220dfb92c86eb978592c0661467d07 +parent: +author: John Doe +date: Sun Oct 12 07:13:21 PDT 2025 +summary: Initial commit \ No newline at end of file diff --git a/git/objects/76f1f0fed543c6cf133d919e540df11e0cbbcbed b/git/objects/76f1f0fed543c6cf133d919e540df11e0cbbcbed new file mode 100644 index 0000000..37e7663 --- /dev/null +++ b/git/objects/76f1f0fed543c6cf133d919e540df11e0cbbcbed @@ -0,0 +1,5 @@ +tree: d8259ac2dd220dfb92c86eb978592c0661467d07 +parent: +author: John Doe +date: Sun Oct 12 07:08:18 PDT 2025 +summary: Initial commit \ No newline at end of file diff --git a/git/objects/b245828b90464cecb0c07ee6e61491ee2dc0c00e b/git/objects/b245828b90464cecb0c07ee6e61491ee2dc0c00e new file mode 100644 index 0000000..13138cd --- /dev/null +++ b/git/objects/b245828b90464cecb0c07ee6e61491ee2dc0c00e @@ -0,0 +1 @@ +Inner World! diff --git a/git/objects/b29b66f5a083ef031a56ebb437e7f58f9b664744 b/git/objects/b29b66f5a083ef031a56ebb437e7f58f9b664744 new file mode 100644 index 0000000..1df4a3d --- /dev/null +++ b/git/objects/b29b66f5a083ef031a56ebb437e7f58f9b664744 @@ -0,0 +1 @@ +blob b245828b90464cecb0c07ee6e61491ee2dc0c00e world.txt \ No newline at end of file diff --git a/git/objects/b34d976be64c07a6de9824d1ede86e66d1184112 b/git/objects/b34d976be64c07a6de9824d1ede86e66d1184112 new file mode 100644 index 0000000..c67444e --- /dev/null +++ b/git/objects/b34d976be64c07a6de9824d1ede86e66d1184112 @@ -0,0 +1,2 @@ +blob ea7b8499509da0261a19e48a8631a6a506f0de0a hello.txt +tree b29b66f5a083ef031a56ebb437e7f58f9b664744 inner \ No newline at end of file diff --git a/git/objects/ea7b8499509da0261a19e48a8631a6a506f0de0a b/git/objects/ea7b8499509da0261a19e48a8631a6a506f0de0a new file mode 100644 index 0000000..980a0d5 --- /dev/null +++ b/git/objects/ea7b8499509da0261a19e48a8631a6a506f0de0a @@ -0,0 +1 @@ +Hello World! diff --git a/git/objects/workingList b/git/objects/workingList index b7a6bf2..992f01d 100644 --- a/git/objects/workingList +++ b/git/objects/workingList @@ -1 +1 @@ -tree 0bc2179e8827414a3bc71984585b4a9044945f4d goofy_ahh \ No newline at end of file +tree b34d976be64c07a6de9824d1ede86e66d1184112 myProgram \ No newline at end of file diff --git a/myProgram/hello.txt b/myProgram/hello.txt new file mode 100644 index 0000000..980a0d5 --- /dev/null +++ b/myProgram/hello.txt @@ -0,0 +1 @@ +Hello World! diff --git a/myProgram/inner/world.txt b/myProgram/inner/world.txt new file mode 100644 index 0000000..13138cd --- /dev/null +++ b/myProgram/inner/world.txt @@ -0,0 +1 @@ +Inner World! diff --git a/temp b/temp index 3ab03a2..93887e9 100644 --- a/temp +++ b/temp @@ -1,5 +1,5 @@ -tree: 9e00765445c7f8a55abf47df54880d9c454fe8ca +tree: d8259ac2dd220dfb92c86eb978592c0661467d07 parent: -author: Samuel Bernardo -date: Sun Oct 12 06:59:32 PDT 2025 -message: Initial commit with test files \ No newline at end of file +author: John Doe +date: Sun Oct 12 07:13:21 PDT 2025 +summary: Initial commit \ No newline at end of file