From 8e65f2767fae2bd567d5509f2fb1b3783bc44fc5 Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Wed, 22 Jan 2025 17:20:58 +0100 Subject: [PATCH] Update README.md --- README.md | 91 +++++++++++++++++++++++++++++++++-- assets/sync_button.png | Bin 0 -> 17923 bytes assets/token_permissions.png | Bin 0 -> 11957 bytes 3 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 assets/sync_button.png create mode 100644 assets/token_permissions.png diff --git a/README.md b/README.md index b8f8097..749edd6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,90 @@ -# Obsidian Github Sync +# Obsidian GitHub Sync -Plugin to sync a Github repository with an Obsidian vault. +Plugin to sync a GitHub repository with an Obsidian vault. -# TODO +> [!CAUTION] +> This is still in beta. + +## Features + +These are the main features of the plugin: + +- Desktop and mobile support +- Doesn't require `git` +- Multiple vaults sync +- Partial vault sync +- Partial remote repository sync +- Automatic sync on fixed interval +- Manual sync + +- Conflicts handling (TODO 🔨) +- Filtering by file type (TODO 🔨) + +## Installation + +The plugin is still in beta so it's still not available in the community plugins. + +For the time being you can install it with BRAT. If you never used BRAT see [the official quick start guide](https://tfthacker.com/brat-quick-guide). + +If you already have BRAT installed click [here](obsidian://brat?plugin=https://github.com/silvanocerza/obsidian-github-sync) to install GitHub Sync. + +## Usage + +### First sync + +When starting the plugin for the first time a dialog will guide you through the setup process. + +If you already have files in your vault I strongly recommend you to create a new private GitHub repository and sync with that. + +> [!NOTE] +> Onboarding is currently not supported on mobile. + +### Token + +A GitHub Fine-grained token is required to sync with your repository. You can create one by clicking [here](https://github.com/settings/personal-access-tokens/new). +The token must have the `Contents` permission set to `Read and write` like in the screenshow below. +![GitHub Fine-grained token](./assets/token_permissions.png) + +I also suggest creating the token with access only to your sync repo. + +### Sync modes + +You can always sync manually by clicking the sync button in the side ribbon. +This will always work even if sync on interval is enabled. +![Sync button](./assets/sync_button.png) + +If you don't want to see the button you can hide it, just check the plugin settings. + +The `Sync with GitHub` command is also available. + +### Partial sync + +Optionally you can choose to sync only a part of your vault and/or your repository. +This might be useful if you keep the sources for your blog in your vault as example, though you sync with some other service. + +> [!WARNING] +> For the time being changing the directories after onboarding is not supported. +> I mean, you can do it, though I have not tested it and it's likely to break in unforeseeable ways. + +### Config sync + +If you want to sync your vault configs with other vault you can enable that. +It will sync the whole folder, that is `.obsidian` by default, including all plugins and themes. + +If you use another sync service it might be best to disable this option. + +> [!NOTE] +> The `.obsidian` folder will always be in the root of your repository, even if you choose +> to not sync vault configs. That happens cause the plugin needs to store some metadata to +> correctly sync. + +### Reset + +I still have to add a reset button to clean the plugin settings and metadata. + +For the time being you can reset the plugin by disabling it in the plugins list and deleting the `github-sync-metadata.json` +file in your config directory, `.obsidian` by default. + +## License + +The project is licensed under the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.en.html) license. diff --git a/assets/sync_button.png b/assets/sync_button.png new file mode 100644 index 0000000000000000000000000000000000000000..46519edd00a9ade012a14431cfa4a1770ef3c006 GIT binary patch literal 17923 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

nPCn-u@p9MMkAo^1ML0E?2Sg~%Z=e)lz zCLSehw%%jpX^19^cX0YW8Kir>`2eQto9noRVHVaMaP&oJ6YYM3=bp|QyKb3bhdnD1 zcOo43*K*8&ENKX+MSV_pjhK|x)zx8VdL!}lG9@vYgiuL5-;PM4!&%Sy1S}w{aN_Q; z?#}z>4mslf!CtU35*Aghz6q1SrWfqm>~&v?1zIi-W7rMGinNoAI~e7kM^4vy4deEq z0YP^t!?qSahQQq#dDm!Ub}C$!A9$aP>8`fI(QMs5xUQ~*Q#r<;pKL|+(jL`+$q-b^ zs`oIT9s^jS*Q^e-pR{%<|LdCzsF{U5jcpLs1h@e1`S^YEwy zm3>Y&^JzbXc~#p@^yh|kfBn8UU4Fjwpr7nQXXm5iRF&e>ohjy%&9RuCZs1*31Am?d zTJ^qQI|NQ%>Br$}zFB)XyCuK-hPsr{2R@6=?&EJG+B4@>BdSUKR=owZH-+Z?-d9-< zN#pn_V_7{0N1{d&WGwZF_&hibFitjK5&4_LVN|whUG?q?DlhLOG&YJ#ZI~V`eR>{4 zT}K>WY0>rYood!fWfyHyf7boJH;PGGjbysmlh@y;o%(>`qflTS-#G+_AVX zjj0SyDqRtlyO$J(RcAZKzM7jm&$(uCaziufD|;0-y|AKHUy3$;B1c)Bv{sb}%&=)~*@ zXuQPF9|Iq+5s_kVW%eMmRgR89T>1#vwSgR-(^=1)J5F9Bk#L!#J}3(B?0$fjb!l3a!jc~prwAujxw&btzO$uh6X>I z3qz3fW*H;=^X-LQD@6JiCbMc8zw_OOJ=J1Idz@lXd|<6uA!QLc^er3c&~TgS8i(U& zpQV5tD*^a^Y(Ii92PbU|lT0{~=BU6!USp*ohKx#;zG%?X3yvZ;j$7Kw55TM?Cu+2P zryv){0|2QpAf);{RggZUb*Tiv_U3d|2_-O#6xdA1{s`j&DDnvymqAi(T&eUU0@#)wBKNRY>g);sfp{CPFI+Pm^w?_wZTFFJA)`& z5=BC3F#7}pE<8)r+qH7Y;$X?PafrF`^Pz5IbK5Q+ic+ zjrO6 zp3`UC_bj_L_xRs7$h)$D6DfXdi0xT=TU#46W9d;CUwQntg|S&x(2U{4KhbA5$R6)` zh3DW{@Y5F)jdY%w0y>rqkL9`hN;eVTkTDJ$Z!FjVDP#OTob-fi61?xlG_nnMYfICb)SnlfE94j7!Zcqvz6cv|gK%$&K7ne7)Q;JX!3^L?9*&Tk)%q}9Dk&s<)L`PL|B2&%+}$Iy3z5Q(+P_cY~^;|ICj59_o& zeSJx>R6@NSQ6yG7Q`NRX4<^$Eo;-g>b6>EU*V`R94jA0f>!ITkqHd)tzeS81rB6hQ zH}Lw>Je$)o#mM<1#z%;kO(%PmDwYmp&6jkdhAb?t(TNU&6YHC6^0m4;KMB^`0_M`{{20l%P<)%JE+!=rdyq%~xpDP&3tR(M90FDdg}iU(i%v0XBlYQV)Dh>LmyUbc8HQ z)EC0&wJO}!Rnzapm$X7)~K(W&hmAAO`CB{wlQy3@h zgi!N$G2~o{Tjedr0KvbjnGLwu;dfn8fU|C*tC3wrEM_4=EaV>$e8nLmP${=2%F7W3 z7^HI?=$?}mW*Q(bVKY@#h`0wlhC_-bP=7+GI>Xjeg?$CuLh?|K@E7E!xIw>ktceFQxCCfeWjV7l~Z3q?oQ?pkazI46ssbitx z2LwNsi`->30HhCtY8_{9kCw^ASYw6+IDef6dV(2X;O@pbqk)?cREu2~ zAceQvwmdwa4P}rlfMscj8rAJ%^DUKo)#J}Gi<-@(wOL7sj)1777f6hI<2eTWQ!IBR zpLyW{Q{;VGHKdzJ{=$;&CH={Lxw6L}cvoVz))Nwwx)mOy`l`uxR1TdIXAefM18p}) zqD9mWnUh$ab>HaCqnNJ99RKh7A1-zq#>$`)Gsn{PJ2lgm0K~igygDtmihLcgEo_+f zpnO8J`t=TB&8)|S(czEvoW9!mfMOpm&`t)YjEe&qv}-7|>PdVh9q$>-oy9H@hlU=N z2VNCN=jTm?otWWXLIM8pXD28POgj#!yNSs&@iN_c{zm{L`dBKK$*ANloROhEU z(N6pP^s~S~!5sC*jc{S!#z(h-O6)42d0ePj``mNG`xR5< z$x;Yiji%~7=EPP z0o{vthmd}K!?=zLhP;#wV%YjUJZyT0sxHx3gEk&%f`{W##J)9|_ zFjY4FH4PZ~&h7XLmSzGvan7?z&AOBCeuakNt>&Nk{fHCxAr5#r?SQV5gy0-mKKYzR z|GP=&paA8vQj7z8Uz-JpAuP#JC)x*4&>E}DTdoc8GwTAbeB{=EtZ+%;(5iNv zHNZcASLheh-ANa6%D!dr7T~(zgGS-!skgh> zaJ+JYwwzHzSF0zClY)aGUDdM2+adllM$iaG8cAKmVZvoMq%Pt`8iwc zejU%Ii0vpVTvGgUzkRsL*V7wB^p*fIvJV7f;I709&BeP7i0RV$?MvO&I$MsDD8sZe ztg%n`+y98=x}N1(WFhH(A{qS=%{d&X=LouM9L@dP3E|lUx<1c1v~#5~K760D(Y(b|{8Ip4j)9{{5~1aesEq;k^A zBuZ%|LkT~0oUSSL1DATZP?O~zVEDBH@aUT@dx%#*V1{FAY<=JU`dV~ap4MBI3z7qkRN8XX{K zjzgKJ!-_0D(PSK2*}yJ6oNx9I`N4Oilt9RRXG%L63Dnq`(BRFx^;<7=sb}Bw`v zLu2}lmg{r7LBS{B5;dy9IGl&c8MvwJ&JX)|lCfu8`?&aa&WDwF3Nu6Cgjw<+Zb#Yp})AI9bZ#6H5`v&df&Cx=B z&s{^Z2rgih0V$*>;=Tck`~+6c%-a5aW?2bz9*m+rL2?Y zdiEm-s*jDf8`+iU98v&i$TCs=BnB!anzq%j$P^CUGKI^rmlV@|sXR_bWSR0*3%#(> zr=o*!I_Vin3lPLB5CSUNjfl}>qyZ*Yls=;oPOM;u!{8uK6*~QV@)soYA;xy+R+yAA z`KB0@e;dgVgrFBxU@i{dLE^=_fTfrXARh3ON3w8X`C7o705lz*_+o;@H-M#d|SM=7ctr2;UmsO`ZZo&(*0>~1uwnULzl?I}R zQ7oC6;_NZmcpw~B)B0-jtEZ@%WD~5jP$9esUrvCOtn6105_H6@sD_dk5D)n2$F9Il z6;S>Bi&!qh-Zw+novZ^s6$M9_5g6N>ENj1*WnBQw>)SfBkgIRK3HXRVUDPd&%$EOU z(4PU5+=|mau#glTnm|}06FJ=%<)Yh{FrIsymIQe#BoETOQ2KNI;MXjFUR#w zgcPrzaCnv(Qow4!MoTt)t8C&;TUz=QLqmv_9eKM87WFIe10lf0d`+ypwUFZsD>CFp zqtz+aQ33d|@ImG$>>3mQljP57e6PC;nos9^%MAh8b6rb+(yOT^#tiO4%F%#?NivdD zOpKGb)+3-1VWNy5dbx1Y46F^pdWfOAUh|!*YdgM>0+MccRsm8(J&oQ+qe0IohbDiPTT-XNDduOs6lA7y@w1xh_7TSuX znRw261XrLUAb2mf=c53I#8b?5hQqc~pkmw^OYP6D{$L}Nxt-P8&XIvs)uG4|r zH%in!)e;z(D;_mVZqc84517#zhS?XUxJ$T|-)0+X`SFQ@cIPQh|CEA&ZJ&k9&XNu*F$sL{wBOa3`E+yuawtWXYOc9ZRDgZ=}tI!9g12`7vfe z2X(N{FRRu9D1&PU-|>fC2ZB!LMFqPluRH1JI2LDMES)5ZsM$ti%qcF!Qn*vZc5_GnD)JaBQ@2}`G z9XzZ0qV@_2S5X6r0q+XO12lRYv*=T$TzvV6EdWvZvm^}{gF%=rhewD)iy=7DB3(iU zbeIXUiNSXu8ZSu{8=5+e999+fsD*TD52hE0+!n7C?Eai*&r4QPhhMbrTd1@DGKVG# zQywh{V4#hF+*TVj>%NKiGj9ao%F+8CCx~o8+ffC4=GUowdP@M~-COBEm(zs5(9Df&ZS?pQ`Fx5WG+IA}-%}H#g6|>Muf^_c> zCSHpeQifDKtDU$FM8R-u^EApvSt>M+=7UbEPsUUJfbUcq$QBEceB7VOmg9FAb!(VP zCS)trr5zM9kj&6^Np242hL|ec^1mCLK)J7T7cb8`(C}6bUo&O+yL(s1BQ&Xssc>Y( zipy#QQvsi)fU^wvon&F@JMH;mzTXQdOZ@HmB9B6GNLHdb%G7g1 z9)EdRnBczilp(n%I~8dZcd>a57oI<=Y;sN~bZPjpmNB+^JzA(4vx-v-F=iold|K@^ zZ;VMmU6A6k%&8H~%J_ADXu8ruesz%nz0!G68pJ&&Oae2212jcOZ|LoEsa#(18xO`> z0)H-G*F*-kwO7Ao*Dfl^(21O%13`2z$@uh82#WEJwysgWF55uOt5=dWjj6;fH(kA9y-s-5Ft6vl}m=8Ls8>n zyBUgU_n(u0}0I`r;Y&|0At2cQF2=_v1CADDsSDLK!?A}vrRG?K$GNQ#87 zlj0Y^iX9itqh{vtg#dvIbQO-#EI|--bMEt9>c~pX~Zm9uT;v-N^#)hEp zab^Z4^EPq!jc3ecUbOVhSj34K;d@CcA1e{li|Fj07&i3jD}om$Wgxt5b*$0a0~29&WfvebkjV@(J735M!}xFkR} z3X+0+z;s~wCww2bdEjHeR6gy5O7!?xt8`qz5KEdM zhemQ+IX(=Rq8D%-wr|y|Y(pghX_^lRX4erFA;m(C{87;Sf%-@R7PhQk4yWj(B@6X? z>98Ae1a=gYppr-q8RF_U`FJGw87k00lu|eo0=>(?7-({}i3U2jOUUv=~9x3#gFME=RPj+1vh* z-LLPvN^y4A`5@Lxvt_g#w_;=@?r(I_JG!=wQ+LEMeNQ z0Z?-`#GmbQJ}O4MdFPYO^13b2CD6UWyvUbk!&~f2-NX0N&GgVy>uOj&2D!OUFWWnG z3{vAQWQ}$Q#gTz^C3j-C!M8_hl3PCSj#vqO=q@jh22?#24Vsa@4_QQj1iO_MAdXcH z$Ggb@NY-p~Jx-Z4GGrPOknw#;BgG{D#)7P8!!=heM_i-fsRJ@?tAxuEpfxn7U|?@V zwfy`SNehfZHXAzW9GmPYdv;ovh`o&ToENcbE2wzB$L|6{r0#l;tx=lo0g0c6INHFM z)9hrFC~veKOZ+^N*mOpg4hzkBF$yR0gsZk(eV_hhlTPnSN$>R)VTI%l^jiX&M6b`5 zKNji5g(U}GOwX?b<8os=c44UPVJQsO+8yzxVNphzqeg?Lhaa)%ULbi5Q20?MDt-LJ z|66`)-fqTcJm?@GU5aF~eKrdZ8|JT6ZwcB{x)H$!0R%{uwCE*K6U~)%0lwH3fRsLv zs7)5zs;tNZz<0P;;ojR`-_bd{3f@e5I35FZLNYqCfkD>v#F()X-aQUN?=Vt^ z)%Q;AijjS5T{&l81m3S#a@PX)h0{6h)WU@r5U{>VNMdCbzpY^lI6~e%vD2B?q7S^H_pe2sZd1;@eUids!VNr3v_WV@ z6y2@kExBOq>vf5r{~UoBHu;0w`a|#~gjE2HwYP4oyd<5W;OG~>u>Wy=v8S!Co}>Ov zE$}>vc(RYXL0Rk-Tx21_Y2>Ynl$stL?ggV^$Q^(=ery((k2WSruyz3iLH)Vj>tKmt z5jFD86psCZHlys~9UG^V;H?*wNBOv@6HT}oCnw@tskaOKKu`H=`en(%-KTXv*WVmk(N|n-qfOa9lj2f-b_jI>c zaIILYkO9PD8o|c^_M0Z3OG!>jz7yydmbnsMSzqVKfNJ>Kf`}6F1Ee;wgchUfxQ*&r z)o3|RDtUjl;qsU=NL-&;BtQwWk!w-kw~!z&gO(6Rzu+-31_c8p_KSo|-3u5}5xQ3! zuj6{b9Mm)YH;MNd;r3on58miuXhslZ(voBkfpWF1$GSg|R51v?vu;pidW`Eo)LICe z1?#uHPumqX;V~pf!Dd#V`R@54>xtC9q-;yT)r(isk+5!sz{_Pi46_I%4M*#%dK2Y_A)t zEW8(|Ek8@eLD4{^F-_*?8f%$VR{@uz|)ib+HjysQ-Vdn@o6o`)(q%w!^3=26=sL)B4z2p2H5z*#3#;Ff>i z3;fwIwYw7cxEjBWD{TdbbhYtu8-B2`x8vDY}44kf@8lcE~<`Oq`yGxqYYNE{Ov<^-JEkd3sjzT533!^v!3B({q*8!h;U z4~Hu>9}qyj7NHAE!*s?R=&JJ@NNzP5wy@hg0>yMpk@br9ll_kmDJkxaT`;sRI_ z?b%9a5^P1D*Da0(#aQmi(rwK3U zf1?s|%siweY7fP-R@=B6^k%uZ;J$`15Bb%jMUU4k?SPTXKMX%7dH8CPYpIi=?bd#Z zi$yUAb|1PE1rj8~!uO9^R5K}OsQW`EZh{=wJ?4@PdN{Wkc81<5s+uS^yrzwG8*sga zp6f5r{S*P$Y)%?3;v&VE7}Rz#(uO)PYGa~*Wh%`yRd+1chVzWDH)7!JrOM&<#*-NL zmS{_?ypZ@-5TnG1p@y-%Cg(C>0w)mLlhJ-)N-^666<2U?TNP~l?Ce0ipkwHu<0*lT0?qU_e*+1x-TUf??;tD=ReXVRbZ_wb#!W~dv z7FC?X$zCK!vIxO0zq=dlUD7UyUD;1X_)5VzdzM?(^;o}J!aQ2_e4m=0a>L@5okp;e zr0G8dUJ2jyCXFo> ziapwyHP|sQfm#^l6nTq2jTW!OzPTT3Txg3yn~HuZ1?0mR#gn-4eAVZ~c%KUniMDme_tmZrcC;T1+b^RmA^tt6n zo8P2aOXm+kndTRmN~p$GgDn*k>|}ju&rqBpzu>D*4Jo|dc>X==K08-_G|H4lZEJ2;#m**)-54^|aC1|0_Zk#h<{hI$PqZ5^Dy+x) z=215komyk~Pvpp13|J4UvV%n8 z`ro~?Cf)L@7t#<(ou4xRxl{yDlR2O=mc=`(xEI0@0#LFHQI zno1X_(&D!ps!}aI8b9AU8TZI!fx9y;*d$a#J}JJF@DWQXmF^?aOgh-rs{N;~&{L^D zF(K$aB%4B?>rK6nkABXZ@e`kHP^P&UTi8^p&b}qG)##rgWZSBN{GKCdro}a*SkR>B zd$RLmXZpi7KIHpT1ds3Q7n~S49r7?PSsmS>0OF}s5Am%R#-+&*4%f1(Vyo{|uGQ}L zd4sY`c%3mcDLPtT?EwqK_DfFm;bGb$PK86;`^A*c^zk~`B{aTuNuyC`Qw}a)so~B$ zmb;Nv%8)tw_!tt{h-?%~wP&*_Cl1b8mgITU`rsZ{=Q#-7-jIPJAcMOUxJn>0cSL7s z-sGKSZ$CuxUqKTfuCS?{xY2ir49WoR$8P)_O%&p8cPAwkM1cO-mQM@@f{&#J5<&Ab zILfS^L>2!Q$Q{S?L%vcbrvIYu6k74%_F~UsZXQ*EOtK{8`ZlOc^1OKe9lQ_6sqloG zwcY`xFbhtQ#)H+p?@x9Bfrm%3Kw=V(Is%C2pcb5poRXI5oN5+8&?yHkLfV6DK-k(k zk7OJj1ILl?c~Qf0@zCBPxye8hQwr|DS_wNarfC|AiH9{M?-#Jovka65=N}DM`o5r1 zJG$3$AFt_4Fyy`vh&um_~)D4Sb`bIg#XuBqf34-o>c$Oq;liG$8Lso z&hHFNfdx?B1{tB>zZd^&udi6_ey>q({CD$K=RcwW$M8o4?E{pU%16IM*&6WI+UL&r z@zU0iDS8#yeHNCkd2~JGW{G(fU>9cx%a~tAekIa?B>tXd4&(QZ_d8Sn%%bLZ^S{pW zm!v`6z;A(4a`XOYa_~)#%iod%MGC)VwB7dC0mt(E7Ag47$nSABdT#w^+Q0Qg-4g#l z=ll1ptpC^JIt!-!b1-6mj`6JHuf1mf_j7FjOEmejf0Tqk!s7RVUHrB7zmy8Tota4u zbP=h|3av2sHi(g^?x>A`Q$woy-`e6!@#i?HO#aLweqi-qXZc&w3|qf%44^ZAYuD4o z!{0Y-UpwOW0fTJip92FED%nkK{g{@i0-n%^>N0kF%l3^G8wFk&8 z~OsjKQQoN2>PMzW>J+rUJ)9&lMFb#zDN|91%gaYFyYA+-L)ddanC Vqx3n75BZlr6y;Q9%cM<%{|~r#>puVh literal 0 HcmV?d00001 diff --git a/assets/token_permissions.png b/assets/token_permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..68413d7824cbb90d77c0bc623c2929723c17ae78 GIT binary patch literal 11957 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