Answers:
මම හිතන්නේ Git on Dropbox නියමයි. මම එය සෑම විටම භාවිතා කරමි. මා සතුව පරිගණක කිහිපයක් තිබේ (නිවසේ දෙකක් සහ වැඩ කරන ස්ථානයක) මම ඩ්රොප්බොක්ස් මධ්යම හිස් ගබඩාවක් ලෙස භාවිතා කරමි. මට එය පොදු සේවාවක සත්කාරකත්වය දැක්වීමට අවශ්ය නැති නිසාත්, මට සැමවිටම යා හැකි සේවාදායකයකට ප්රවේශයක් නොමැති නිසාත්, ඩ්රොප්බොක්ස් පසුබිම තුළ (ඉතා ඉක්මණින්) සමමුහුර්ත කිරීමෙන් මෙය බලා ගනී.
සැකසුම මේ වගේ දෙයක්:
~/project $ git init
~/project $ git add .
~/project $ git commit -m "first commit"
~/project $ cd ~/Dropbox/git
~/Dropbox/git $ git init --bare project.git
~/Dropbox/git $ cd ~/project
~/project $ git remote add origin ~/Dropbox/git/project.git
~/project $ git push -u origin master
එතැන් සිට, ඔබ ~/Dropbox/git/project.git
ඔබේ ඩ්රොප්බොක්ස් ගිණුම සමඟ සම්බන්ධ වී ඇති බව ක්ලෝන කළ හැකිය (නැතහොත් මෙම නාමාවලිය මිනිසුන් සමඟ බෙදාගෙන ඇත), ඔබට සාමාන්ය Git මෙහෙයුම් සියල්ලම කළ හැකි අතර ඒවා ඔබගේ අනෙක් සියලුම යන්ත්ර සමඟ ස්වයංක්රීයව සමමුහුර්ත වේ.
මගේ තර්කනය සහ මගේ පරිසරය සකසා ගන්නා ආකාරය මත මම බ්ලොග් සටහනක්, අනුවාද පාලකය ( පැරණි සබැඳිය මියගොස් ඇත ) ලිවීය , එය මගේ රූබි ඔන් රේල්ස් සංවර්ධන අත්දැකීම් මත පදනම් වූවකි , නමුත් එය ඕනෑම දෙයකට යෙදිය හැකිය.
මෙය කිරීමට නිවැරදි ක්රමය වන්නේ git-remote-dropbox භාවිතා කිරීමයි: https://github.com/anishathalye/git-remote-dropbox
ඩ්රොප්බොක්ස් හි ඔබේම රිපෝ එකක් සෑදීම ගැටලු රාශියක් ඇති කරයි. අනීෂ් (පුස්තකාලයේ නිර්මාතෘ) එය වඩාත් හොඳින් පැහැදිලි කරයි :
මෙම ගැටළුවලට මූලික හේතුව වන්නේ ඩ්රොප්බොක්ස් ඩෙස්ක්ටොප් සේවාදායකයා නිර්මාණය කර ඇත්තේ ගොනු සමමුහුර්ත කිරීම සඳහා මිස Git නිධි නොවේ. Git නිධි සඳහා විශේෂ හැසිරවීමකින් තොරව, එය Git හා සමාන සහතිකයක් පවත්වා නොගනී. දුරස්ථ නිධියෙහි මෙහෙයුම් තවදුරටත් පරමාණුක නොවන අතර සමගාමී මෙහෙයුම් හෝ සමමුහුර්තකරණය සමඟ අවාසනාවන්ත වේලාව දූෂිත ගබඩාවකට හේතු විය හැක.
මෙය නිසි ලෙස සිදු කිරීම සඳහා සාම්ප්රදායික Git දුරස්ථ සේවාදායකයේ කේත ධාවනය කරයි, නමුත් අපට එය කළ නොහැක.
විසඳුම: මෙය නිසි ලෙස විසඳා ගත හැකිය. බහුවිධ පරිශීලකයින් සහ සමගාමී මෙහෙයුම් තිබියදීත්, Git with Dropbox භාවිතා කළ හැකි අතර සාම්ප්රදායික Git දුරස්ථයක් ලෙස එකම ආරක්ෂාව සහ අනුකූලතාව සහතික කළ හැකිය!
පරිශීලකයෙකු සඳහා, එය Git- ඩ්රොප්බොක්ස් අතර විනිවිද පෙනෙන ද්විපාර්ශ්වික පාලමක් ලෙස ක්රියා කරන සාම්ප්රදායික Git දුරස්ථයක සියලු සහතික පවත්වා ගෙන යන Git දුරස්ථ සහායක Git දුරස්ථ සහායක භාවිතා කිරීම තරම් සරල ය. හවුල් ෆෝල්ඩර සමඟ භාවිතා කිරීම පවා ආරක්ෂිතයි, එබැවින් එය සහයෝගීතාව සඳහා භාවිතා කළ හැකිය (අසීමිත සහයෝගිතාකරුවන් සමඟ අසීමිත පුද්ගලික ගබඩාවන්!).
දුරස්ථ සහායක සමඟ, ඩ්රොප්බොක්ස් Git දුරස්ථයක් ලෙස භාවිතා කළ හැකි අතර, Git clone, git pull, සහ git push වැනි සාමාන්ය Git විධානයන් දිගටම භාවිතා කළ හැකි අතර සියල්ල බලාපොරොත්තු වූ පරිදි ක්රියාත්මක වේ.
මෙම පිළිතුර බුධ මත පදනම් වේ අත්දැකීම් මිස Git නොවේ, නමුත් මෙම අත්දැකීම පවසන්නේ මේ ආකාරයට ඩ්රොප්බොක්ස් භාවිතා කිරීම දූෂිත ගබඩාවන් ඉල්ලා සිටින බවයි. විවිධ යන්ත්රවලින් එකම ඩ්රොප්බොක්ස් මත පදනම් වූ ගබඩාව විවිධ යන්ත්රවලින් යාවත්කාලීන කිරීමට ඔබට අවස්ථාවක් තිබේ නම් (මැක්, යුනික්ස්, වින්ඩෝස් මගේ නඩුවේ).
වැරදියට සිදුවිය හැකි දේවල් පිළිබඳ සම්පූර්ණ ලැයිස්තුවක් මා සතුව නැත, නමුත් මෙන්න මට තිත්ත වූ නිශ්චිත උදාහරණයක්. සෑම යන්ත්රයකටම රේඛීය-අවසන් අක්ෂර සහ ඉහළ / කුඩා අකුරු ගොනු නාම වලින් හසුරුවන ආකාරය පිළිබඳ සංකල්පයක් ඇත. ඩ්රොප්බොක්ස් සහ Git / Mercurial මෙය තරමක් වෙනස් ලෙස හසුරුවයි (මට නිශ්චිත වෙනස්කම් මතක නැත). ඩ්රොප්බොක්ස් විසින් Git / Mercurial ගේ පිටුපස, ප්රෙස්ටෝ, කැඩුණු නිධිය පිටුපස ඇති නිධිය යාවත්කාලීන කරන්නේ නම්. මෙය ක්ෂණිකව හා නොපෙනෙන ලෙස සිදු වේ, එබැවින් ඔබ එයින් යමක් ආපසු ලබා ගැනීමට උත්සාහ කරන තුරු ඔබේ ගබඩාව කැඩී ඇති බව ඔබ නොදනී.
මේ ආකාරයෙන් දේවල් කරන එක් අවුලකින් හාරා බැලීමෙන් පසු, මම පහත වට්ටෝරුව ඉතා සාර්ථක ලෙස භාවිතා කර ඇති අතර කිසිදු ගැටළුවක් නොමැත. ඔබේ ගබඩාව ඩ්රොප්බොක්ස් වලින් ඉවතට ගෙන යන්න. අනෙක් සියල්ල සඳහා ඩ්රොප්බොක්ස් භාවිතා කරන්න; ප්රලේඛනය, JAR ගොනු , ඔබ කැමති ඕනෑම දෙයක්. සහ භාවිතා GitHub (GIT) හෝ Bitbucketගබඩාව කළමනාකරණය (Mercurial) භාවිතා කරන්න. දෙකම නොමිලේ වන බැවින් මෙය පිරිවැයට කිසිවක් එකතු නොකරන අතර සෑම මෙවලමක්ම දැන් එහි ශක්තීන් සඳහා ක්රියා කරයි.
ඩ්රොප්බොක්ස් මුදුනේ Git / Mercurial ධාවනය කිරීමෙන් අවදානම හැර වෙන කිසිවක් එකතු නොවේ. එය නොකරන්න.
ඩ්රොප්බොක්ස් භාවිතා කරන කුඩා කණ්ඩායම් සම්බන්ධයෙන්:
ඩ්රොප්බොක්ස් හි එක් එක් සංවර්ධකයාට තමන්ගේම ලිවිය හැකි හිස් ගබඩාවක් තිබේ නම් එය වෙනත් සංවර්ධකයින් වෙත පමණක් ඇද ගත හැකි නම්, මෙය දූෂණ අවදානමක් නොමැතිව කේත බෙදා ගැනීමට පහසුකම් සපයයි!
එවිට ඔබට මධ්යගත 'ප්රධාන පෙළක්' අවශ්ය නම්, ඔබට එක් සංවර්ධකයෙකුට තමන්ගේම ගබඩාවෙන් ඒ සඳහා වන සියලු තල්ලු කළමණාකරනය කළ හැකිය.
මගේ සියලු ව්යාපෘති එක Git ගබඩාවක් යට තැබීමට මට අවශ්ය නොවීය, සෑම ව්යාපෘතියක් සඳහාම මෙම කේතය ක්රියාත්මක කිරීමට මට අවශ්ය නොවීය, එබැවින් මම ක්රියාවලිය ස්වයංක්රීය කරන Bash ස්ක්රිප්ට් එකක් සාදන ලදී . ඔබට එය එක් හෝ බහු බහලුම් මත භාවිතා කළ හැකිය - එබැවින් එයට මෙම ලිපියේ කේතය ඔබ වෙනුවෙන් කළ හැකිය, නැතහොත් එය එකවර විවිධ ව්යාපෘති වල කළ හැකිය.
#!/bin/sh
# Script by Eli Delventhal
# Creates Git projects for file folders by making the origin Dropbox. You will need to install Dropbox for this to work.
# Not enough parameters, show help.
if [ $# -lt 1 ] ; then
cat<<HELP
projects_to_git.sh -- Takes a project folder and creates a Git repository for it on Dropbox
USAGE:
./projects_to_git.sh file1 file2 ..
EXAMPLES:
./projects_to_git.sh path/to/MyProjectDir
Creates a git project called MyProjectDir on Dropbox
./projects_to_git.sh path/to/workspace/*
Creates a git project on Dropbox for every folder contained within the workspace directory, where the project name matches the folder name
HELP
exit 0
fi
# We have enough parameters, so let's actually do this thing.
START_DIR=$(pwd)
# Make sure we have a connection to Dropbox
cd ~
if [ -s 'Dropbox' ] ; then
echo "Found Dropbox directory."
cd Dropbox
if [ -s 'git' ] ; then
echo " Dropbox Git directory found."
else
echo " Dropbox Git directory created."
mkdir git
fi
else
echo "You do not have a Dropbox folder at ~/Dropbox! Install Dropbox. Aborting..."
exit 0
fi
# Process all directories matching the passed parameters.
echo "Starting processing for all files..."
for PROJ in $*
do
if [ -d $PROJ ] ; then
PROJNAME=$(basename $PROJ)
echo " Processing $PROJNAME..."
# Enable Git with this project.
cd $PROJ
if [ -s '.git' ] ; then
echo " $PROJNAME is already a Git repository, ignoring..."
else
echo " Initializing Git for $PROJNAME..."
git init -q
git add .
git commit -m "Initial creation of project." -q
# Make the origin Dropbox.
cd ~/Dropbox/git
if [ -s $PROJNAME ] ; then
echo " Warning! $PROJNAME already exists in Git! Ignoring..."
else
echo " Putting $PROJNAME project on Dropbox..."
mkdir $PROJNAME
cd $PROJNAME
git init -q --bare
fi
# Link the project to the origin
echo " Copying local $PROJNAME to Dropbox..."
cd $PROJ
git remote add origin "~/Dropbox/git/$PROJNAME"
git push -q origin master
git branch --set-upstream master origin/master
fi
fi
done
echo "Done processing all files."
cd $START_DIR
Git සහ Dropbox භාවිතා කිරීම යා යුතු මාර්ගය යැයි මම නොසිතමි ... දෙකෙහිම ලක්ෂණ ගැන සිතා බලන්න:
Git:
ඩ්රොප්බොක්ස්:
ඔබගේ ලිපිගොනු කිහිපයක් බෙදා ගැනීම ගැන ඔබ කනස්සල්ලට පත්ව සිටී නම්, ඒවා කේතාංකනය නොකරන්නේ ඇයි? එවිට ඔබට ඩ්රොප්බොක්ස් හි විශාලතම වාසිය Git වෙත ලබා ගත හැකිය, එනම් පොදු සහ පෞද්ගලික ලිපිගොනු තිබීම ...
එය දැන් 2015 වන අතර, දින තුනකට පෙර, ඩ්රොප්බොක්ස් මත ආරක්ෂිතව git භාවිතා කිරීම සඳහා ඩ්රොප්බොක්ස් API v2 මත පදනම් වූ නව මෙවලමක් නිර්මාණය කර ඇත. එය ඩෙස්ක්ටොප් සේවාදායකයා භාවිතා කරනවාට වඩා API ට එරෙහිව ක්රියා කරන අතර හවුල් ෆෝල්ඩරයක සත්කාරකත්වය දරන ගබඩාවකට එකවර එකවර තල්ලු කිරීම නිවැරදිව හසුරුවයි.
වින්යාස කිරීමෙන් පසු, එය වෙනත් ඕනෑම git දුරස්ථයක් මෙන් හරියටම git දුරස්ථයක් සැකසීමට ඉඩ දෙයි.
git clone "dropbox::/path/to/repo"
git remote add origin "dropbox::/path/to/repo"
සංකේතාත්මක දුරස්ථ උපස්ථ සඳහා මම මර්කුරියල් (හෝ Git) + TrueCrypt + Dropbox භාවිතා කරමි .
සිසිල්ම දෙය නම්, ඔබේ කේතයේ කුඩා කොටසක් ඔබ වෙනස් කරන්නේ නම්, ඩ්රොප්බොක්ස් මුළු TrueCrypt බහාලුම සමමුහුර්ත නොකරයි. සමමුහුර්ත කාලය වෙනස්වීම් ප්රමාණයට දළ වශයෙන් සමානුපාතික වේ. එය සංකේතනය කර තිබුණද, TrueCrypt + Dropbox සංයෝජනය මඟින් බ්ලොක් කේතාංකය + වාරණ මට්ටමේ සමමුහුර්තකරණය විශිෂ්ට ලෙස භාවිතා කරයි.
දෙවනුව, මොනොලිතික් සංකේතාත්මක බහාලුමක් ආරක්ෂාව පමණක් නොව, නිධිය දූෂණය වීමේ අවදානම ද අඩු කරයි .
අවවාදයයි: කෙසේ වෙතත්, ඩ්රොප්බොක්ස් ක්රියාත්මක වන විට කන්ටේනරය සවි නොකිරීමට ඔබ ප්රවේශම් විය යුතුය. විවිධ සේවාදායකයින් දෙදෙනෙකු බහාලුම් වෙත විවිධ අනුවාදයන් පරීක්ෂා කර බැලුවහොත් ගැටුම් නිරාකරණය කිරීම ද වේදනාවක් විය හැකිය. එබැවින්, එය ප්රායෝගික වන්නේ කණ්ඩායමක් සඳහා නොව උපස්ථ සඳහා එය භාවිතා කරන තනි පුද්ගලයෙකුට පමණි.
පිහිටුවීම:
preserve modification timestamp
*.භාවිතය:
PS preserve modification timestamp
ගොනුව වෙනස් කර ඇති බවත් එය සමමුහුර්ත කළ යුතු බවත් පවසන ඩ්රොප් බොක්ස් පරීක්ෂා කිරීම. කන්ටේනරය සවි කිරීම මඟින් ඔබ එහි කිසිදු ගොනුවක් වෙනස් නොකළද කාලරාමුව වෙනස් කරන බව සලකන්න. එය සිදුවීමට ඔබට අවශ්ය නැතිනම්, ශබ්දය එලෙසම සවි කරන්නread-only
මම ඩෑන් මැක්නෙවින්ගේ පිළිතුරට කැමතියි! මම දැන් Git සහ Dropbox එකට භාවිතා කරමි, මම මගේ .bash_profile හි අන්වර්ථ නාම කිහිපයක් භාවිතා කරමි, එබැවින් මගේ කාර්ය ප්රවාහය මේ ආකාරයෙන් පෙනේ:
~/project $ git init
~/project $ git add .
~/project $ gcam "first commit"
~/project $ git-dropbox
මේවා මගේ අන්වර්ථ නාමයන් ය:
alias gcam='git commit -a -m'
alias gpom='git push origin master'
alias gra='git remote add origin'
alias git-dropbox='TMPGP=~/Dropbox/git/$(pwd | awk -F/ '\''{print $NF}'\'').git;mkdir -p $TMPGP && (cd $TMPGP; git init --bare) && gra $TMPGP && gpom'
අපි මෙම ක්රමය (ඩ්රොප්බොක්ස් හි හිස් ගබඩාවක් නිර්මාණය කිරීම) කොටස් ෆෝල්ඩරයක භාවිතා කරමු .
සංවර්ධකයින් කුඩා කණ්ඩායමකට එම සමමුහුර්ත ගබඩාවෙන් ඉවත් වී දේශීය ක්ලෝනයක් නිර්මාණය කළ හැකිය. වැඩ ඒකකය අවසන් වූ පසු, අපි නැවත ආරම්භයට තල්ලු කරමු.
මට මග හැරුණු එක් දෙයක් නම්, මූලාරම්භයට තල්ලුවක් සිදු වූ වහාම වෙනස් කළ තොරතුරු සහිත විද්යුත් ලිපියක් යැවීමට හොඳ ක්රමයකි. වෙනස්කම් අතින් නිරීක්ෂණය කිරීමට අපි ගූගල් වේව් භාවිතා කරමු.
මම නිර්දේශිත ආකාරයෙන් මර්කරියල් භාවිතා කර ඇති අතර ඔබ පරිස්සම් වන්නැයි ඉල්ලා සිටිමි, විශේෂයෙන් ඕනෑම යන්ත්රයක් වෙනස් නම්. ඩ්රොප්බොක්ස් වේදිකාව අද්භූත ලිපිගොනු නඩුවේ ගැටළු ස්වයංසිද්ධව මතු වන බවට පැමිණිලි වලින් පිරී ඇත. එච්.ජී. (සහ මම සිතන්නේ) සාමාන්ය චෙක්පත්වලදී පැමිණිලි නොකරනු ඇති අතර පැමිණිලි නොකරන අතර දූෂණය ගැන ඔබ අසන්නේ දූෂිත රෙපෝවක් ගැන ඔබ පැමිණිලි කළ විට පමණක් එය සත්ය ලෙස භාවිතා කිරීමට උත්සාහ කරන විට පමණි. නරක ආරංචියක්. ගැටලුව සහ එහි ක්රියාකාරිත්වය පිළිබඳව මට වඩාත් නිශ්චිත විය හැකි යැයි සිතමි; මම තවමත් උත්සාහ කරන්නේ මෙම අවුලෙන් මිදීමටයි.
විවෘත මූලාශ්ර ව්යාපෘතියක් (හරස් වේදිකා [ලිනක්ස්, මැක්, වින්] ස්ක්රිප්ට් එකතුවක්) ඇත, එමඟින් නිධිය කළමණාකරණයේ සියලු අමිහිරි තොරතුරු අතලොස්සක් (3-4) විධාන සහිතව සිදු කරයි.
https://github.com/karalabe/gitbox/wiki
නියැදි භාවිතය:
$ gitbox create myapp
Creating empty repository...
Initializing new repository...
Repository successfully created.
$ gitbox clone myapp
Cloning repository...
Repository successfully cloned.
සාමාන්ය git භාවිතය පසු:
$ echo “Some change” > somefile.txt
$ git add somefile.txt
$ git commit –m “Created some file”
$ git push
සම්පූර්ණ විධාන යොමු සහ නිබන්ධන සඳහා ව්යාපෘති විකිය සහ අත්පොත් පරීක්ෂා කරන්න.
මම මගේ ගිතුබ් නොවන ගබඩාව ඩ්රොප්බොක්ස් මත ගබඩා කරමි. මා දිව ගිය එක් අවවාදයක් නැවත ස්ථාපනය කිරීමෙන් පසුව සමමුහුර්ත විය. ඩ්රොප්බොක්ස් විශාල ගොනු වෙත යාමට පෙර කුඩාම ගොනු බාගත කරයි. ඔබ රාත්රියේ ආරම්භ කර සති අන්තයෙන් පසු නැවත පැමිණෙන්නේ නම් ගැටළුවක් නොවේ :-)
මගේ නූල් - http://forums.dropbox.com/topic.php?id=29984&replies=6
දැන් 2014 දී මම වසර එකහමාරක පමණ කාලයක් තිස්සේ කිසිදු ගැටළුවක් නොමැතිව Git සහ Dropbox භාවිතා කරමි. සමහර කරුණු:
git push
දුරස්ථ ගබඩාවකට තල්ලු කරයි, එවිට එය කවදා හෝ දූෂිත වුවහොත් මට එය පහසුවෙන් ලබා ගත හැකිය.C:\Users
ඇති mklink /D link target
නිසා මට අන්වර්ථයන් නිර්මාණය කිරීමට සිදුවිය.ඩෑන් මැක්නෙවින්ගේ ඉහළම ඡන්දය දුන් පිළිතුරට මම කැමතියි. මම බොහෝ වාරයක් git විධාන අනුපිළිවෙලින් අවසන් කර පිටපතක් සෑදීමට තීරණය කළෙමි. ඉතින් මෙන්න එයයි:
#!/bin/bash
# Usage
usage() {
echo "Usage: ${0} -m [ master-branch-directory ] -r [ remote-branch-directory ] [ project-name ]"
exit 1
}
# Defaults
defaults() {
masterdir="${HOME}/Dropbox/git"
remotedir="${PWD}"
gitignorefile="# OS generated files #\n\n.DS_Store\n.DS_Store?\n.Spotlight-V100\n.Trashes\nehthumbs.db\nThumbs.db"
}
# Check if no arguments
if [ ${#} -eq 0 ] ; then
echo "Error: No arguments specified"
usage
fi
#Set defaults
defaults
# Parse arguments
while [ ${#} -ge 1 ]; do
case "${1}" in
'-h' | '--help' ) usage ;;
'-m' )
shift
masterdir="${1}"
;;
'-r' )
shift
remotedir="${1}"
;;
* )
projectname="${1##*/}"
projectname="${projectname%.git}.git"
;;
esac
shift
done
# check if specified directories and project name exists
if [ -z "${projectname}" ]; then
echo "Error: Project name not specified"
usage
fi
if [ ! -d "${remotedir}" ]; then
echo "Error: Remote directory ${remotedir} does not exist"
usage
fi
if [ ! -d "${masterdir}" ]; then
echo "Error: Master directory ${masterdir} does not exist"
usage
fi
#absolute paths
remotedir="`( cd \"${remotedir}\" && pwd )`"
masterdir="`( cd \"${masterdir}\" && pwd )`"
#Make master git repository
cd "${masterdir}"
git init --bare "${projectname}"
#make local repository and push to master
cd "${remotedir}"
echo -e "${gitignorefile}" > .gitignore # default .gitignore file
git init
git add .
git commit -m "first commit"
git remote add origin "${masterdir}/${projectname}"
git push -u origin master
#done
echo "----- Locations -----"
echo "Remote branch location: ${remotedir}"
echo "Master branch location: ${masterdir}"
echo "Project Name: ${projectname}"
ස්ක්රිප්ටයට අවශ්ය වන්නේ ව්යාපෘති නාමයක් පමණි. එය ~/Dropbox/git/
නිශ්චිත නාමය යටතේ git ගබඩාවක් ජනනය කරනු ඇති අතර වත්මන් නාමාවලියෙහි සම්පූර්ණ අන්තර්ගතය අලුතින් සාදන ලද මූලාරම්භක ශාඛාව වෙත තල්ලු කරනු ඇත. එක් ව්යාපෘති නාමයකට වඩා ලබා දී ඇත්නම්, නිවැරදි-වඩාත්ම ව්යාපෘති නාම තර්කය භාවිතා කරනු ඇත.
විකල්පයක් ලෙස, -r විධාන තර්කය මඟින් දුරස්ථ ශාඛාව නියම කරන අතර එය මූලාරම්භක මාස්ටර් වෙත තල්ලු වේ. ව්යාපෘති සම්භවයක් ඇති මාස්ටර්ගේ පිහිටීම -m තර්කය සමඟ ද නියම කළ හැකිය. පෙරනිමි .gitignore ගොනුවක් දුරස්ථ ශාඛා නාමාවලියෙහි ද තබා ඇත. ඩිරෙක්ටරිය සහ .gitignore ගොනු පෙරනිමි විධානාවලියෙහි දක්වා ඇත.
තවත් ප්රවේශයක්:
වඩාත් ජනප්රිය වන an ඩෑන් පිළිතුර ඇතුළුව මේ දක්වා ඇති සියලුම පිළිතුරු, ගිතුබ් , බිට්බකට් වැනි උපකරණ සඳහා යොමු කර ඇති සේවාවක් භාවිතා කරනවා වෙනුවට හවුල් ගබඩාවක් කේන්ද්රගත කිරීම සඳහා ඩ්රොප්බොක්ස් භාවිතා කිරීමේ අදහස ආමන්ත්රණය කරයි.
එහෙත්, මුල් ප්රශ්නයේ “Git සහ Dropbox එකට effectively ලදායී ලෙස” භාවිතා කිරීම යන්නෙන් අදහස් කරන්නේ කුමක්ද යන්න නිශ්චිතව දක්වා නැති හෙයින්, අපි තවත් ප්රවේශයක් මත වැඩ කරමු: “වැඩපොළ පමණක් සමමුහුර්ත කිරීමට Dropbox භාවිතා කිරීම.”
මෙම පියවරයන් කෙසේද:
ව්යාපෘති නාමාවලිය තුළ යමෙක් හිස් .git
නාමාවලියක් නිර්මාණය කරයි (උදා mkdir -p myproject/.git
)
.git
ඩ්රොප්බොක්ස් හි නාමාවලිය සමමුහුර්ත කරන්න . ඩ්රොප්බොක්ස් යෙදුම භාවිතා කරන්නේ නම්: මනාපයන්, සමමුහුර්තකරණය වෙත ගොස් "සමමුහුර්ත කිරීම සඳහා ෆෝල්ඩර තෝරන්න", එහිදී .git
නාමාවලිය සලකුණු නොකල යුතුය. මෙය .git
නාමාවලිය ඉවත් කරයි .
ලකුණු git init
ව්යාපෘතිය නාමාවලියේ
එය ද ක්රියාත්මක වේ .git
දැනටමත් තිබේ , පසුව පියවර 2 පමණක් කරන්න. ඩ්රොප්බොක්ස් විසින් වෙබ් අඩවියේ ඇති git ගොනු වල පිටපතක් තබා ගනී.
පියවර 2 මඟින් ඩ්රොප්බොක්ස් මඟින් git පද්ධති ව්යුහය සමමුහුර්ත නොකිරීමට හේතු වනු ඇත, එය මෙම ප්රවේශය සඳහා අපේක්ෂිත ප්රති come ලය වේ.
යමෙක් මෙම ප්රවේශය භාවිතා කරන්නේ ඇයි?
තවම තල්ලු නොකළ වෙනස්කම් වලට ඩ්රොප්බොක්ස් උපස්ථයක් ඇති අතර ඒවා උපාංග හරහා සමමුහුර්ත වේ.
නඩුවේ නාමාවලි එකක් ඉස්කුරුප්පු උපාංග අතර සමමුහුර්ත විට, යම් දෙයක් අත git status
හා git diff
දේවල් නිරාකරණය කිරීමට ප්රයෝජනවත් වනු ඇත.
එය ඩ්රොප්බොක්ස් ගිණුමේ ඉඩ ඉතිරි කරයි (මුළු ඉතිහාසයම එහි ගබඩා නොවේ)
@ ඩෑන් ගේ පිළිතුර පිළිබඳ අදහස් දැක්වීමේදී ud ඩුබෙක් සහ te ඒට්ස් විසින් මතු කරන ලද ගැටළු සහ තවත් පිළිතුරකින් ක්ලූ විසින් දක්වන ලද ගැටළු එයින් වළක්වයි .
වෙනත් තැනක දුරස්ථයක පැවැත්ම (ගිතුබ්, ආදිය) මෙම ප්රවේශය සමඟ හොඳින් ක්රියා කරයි.
විවිධ ශාඛා මත වැඩ කිරීම ගැටළු කිහිපයක් ගෙන එයි, ඒවා ගැන සැලකිලිමත් විය යුතුය:
එක් විභව ගැටළුවක් වන්නේ විවිධ ශාඛා පරික්ෂා කිරීමේදී ඩ්රොප්බොක්ස් (අනවශ්ය ලෙස?) බොහෝ ලිපිගොනු සමමුහුර්ත කිරීමයි.
ඩ්රොප්බොක්ස් සමමුහුර්ත උපාංග දෙකක් හෝ වැඩි ගණනක් විවිධ ශාඛා පරික්ෂා කර ඇත්නම්, උපාංග දෙකටම සිදු නොවූ වෙනස්කම් නැතිවිය හැකිය,
මෙම ගැටළු මඟහරවා ගත හැකි එක් ක්රමයක් නම් git worktree
ශාඛා පිරික්සුම් වෙනම නාමාවලිවල තබා ගැනීමයි.
xattr -w com.dropbox.ignored 1 /path/to/somewhere
.
මගේ ශත 2 සඳහා ඩ්රොප්බොක්ස් මඟින් මධ්යම භාවිතය සඳහා සත්කාරක සමාගමක් ලබා ගැනීමට කරදර වීමට අවශ්ය නැති තැන පුද්ගලික භාවිතය සඳහා පමණක් යොදා ගනී. ඕනෑම වෘත්තීය සංවර්ධනයක් සඳහා ඔබ විසඳීමට වඩා ගැටලු ඇති කරනු ඇත, දැනටමත් ත්රෙඩ් එකේ කිහිප වතාවක්ම සඳහන් කර ඇති පරිදි, ඩ්රොප්බොක්ස් මෙම භාවිත අවස්ථාව සඳහා නිර්මාණය කර නැත. තෙවන පාර්ශවීය ප්ලගීන හෝ මෙවලම් නොමැතිව ඩ්රොප්බොක්ස් මත ගබඩාවන් බැහැර කිරීම සඳහා පරිපූර්ණ ආරක්ෂිත ක්රමයක් වන්නේ මිටි භාවිතා කිරීමයි. .gitconfig
ටයිප් කිරීම සුරැකීම සඳහා පහත සඳහන් අන්වර්ථයන් මා සතුව ඇත :
[alias]
bundle-push = "!cd \"${GIT_PREFIX:-.}\" && if path=\"$(git config remote.\"$1\".url)\" && [ \"${path:0:1}\" = / ]; then git bundle create \"$path\" --all && git fetch \"$1\"; else echo \"Not a bundle remote\"; exit 1; fi #"
bundle-fetch = "!cd \"${GIT_PREFIX:-.}\" && if path=\"$(git config remote.\"$1\".url)\" && [ \"${path:0:1}\" = / ]; then git bundle verify \"$path\" && git fetch \"$1\"; else echo \"Not a bundle remote\"; exit 1; fi #"
bundle-new = "!cd \"${GIT_PREFIX:-.}\" && if [ -z \"${1:-}\" -o -z \"${2:-}\" ]; then echo \"Usage: git bundle-new <file> <remote name>\"; exit 1; elif [ -e \"$2\" ]; then echo \"File exist\"; exit 1; else git bundle create \"$2\" --all && git remote add -f \"$1\" \"$(realpath \"$2\")\"; fi #"
උදාහරණයක්:
# Create bundle remote (in local repo)
$ git bundle-new dropbox ~/Dropbox/my-repo.bundle
# Fetch updates from dropbox
$ git bundle-fetch dropbox
# NOTE: writes over previous bundle. Thus, roughly equivalent to push --force --prune --all
$ git bundle-push
මම ඒ හා සමාන ගැටලුවකට මුහුණ දී ඇති අතර ඒ සඳහා කුඩා පිටපතක් නිර්මාණය කර ඇත්තෙමි. අදහස නම් හැකි තරම් සරලව Git සමඟ Dropbox භාවිතා කිරීමයි. දැනට, මම ඉක්මනින් රූබි ක්රියාත්මක කර ඇත කේතය අතර, මම ඉක්මනින් තවත් එකතු කරමි.
ස්ක්රිප්ටයට ප්රවේශ විය හැකිය https://github.com/nuttylabs/box-git
.
තෙවන පාර්ශවීය ඒකාබද්ධ කිරීමේ මෙවලම් භාවිතා නොකර, මට තත්වය ටිකක් වැඩි කර ඩ්රොප් බොක්ස් සහ ස්පයිඩර් ඕක් විත් Git වැනි වෙනත් වලාකුළු තැටි සේවා භාවිතා කළ හැකිය.
ඉලක්කය වන්නේ මෙම ලිපිගොනු වෙනස් කිරීම් මධ්යයේ සමමුහුර්තකරණය වළක්වා ගැනීමයි, එයට අර්ධ තත්වයක් උඩුගත කළ හැකි අතර පසුව එය නැවත බාගත කර ඔබගේ git තත්වය මුළුමනින්ම දූෂිත කරයි.
මෙම ගැටළුව වළක්වා ගැනීම සඳහා, මම කළේ:
git bundle create my_repo.git --all
.එය පරිපූර්ණ නොවේ, එය නැවත වරක් git තත්වය අවුල් නොකරන බවට සහතිකයක් නොමැති නමුත් එය උපකාරී වන අතර මේ මොහොතේ මට කිසිදු ගැටළුවක් නොලැබුණි.
මැකෝස් හි ඔබට ඩ්රොප්බොක්ස් නැවැත්විය හැකිය, ඔබේ වෙනස්කම් සිදු කර ඩ්රොප්බොක්ස් නැවත ආරම්භ කරන්න. මම පහත සංයෝජනය භාවිතා කරන අතර ඒ ගැන සෑහීමකට පත්වෙමි:
දෙකෙහිම (ඔබගේ දේශීය git කළමනාකරණය කළ ව්යාපෘති නාමාවලිය සහ ඩ්රොප්බොක්ස් හි පිහිටා ඇති ඔබේ දුරස්ථ git ගබඩාව) ස්වයංක්රීය ඇසුරුම් අක්රීය කිරීම සඳහා පහත විධානය ක්රියාත්මක කරන්න (ඩ්රොප්බොක්ස් සමමුහුර්ත කිරීමේ ප්රධාන ගැටළුව මෙයයි)
git config --global gc.auto 0
වරින් වර, ඩ්රොප්බොක්ස් අක්රීය කර ඇති නිධි සම්පීඩනය කරන්න. උදාහරණයක් ලෙස, මම මගේ යෙදුම්වල නව නිකුතුවන් කරන සෑම අවස්ථාවකම මගේ බැෂ්-බිල්ඩ්-ස්ක්රිප්ට් හි පහත සඳහන් දේ කරමි.
osascript -e "tell application \"Dropbox\" to quit"
# Compress local
git gc --prune=now; git repack -a -d
# Compress remote
REPOS_DIR_REMOTE=`git remote get-url --push origin`
cd "${REPOS_DIR_REMOTE}"
git gc --prune=now; git repack -a -d
osascript -e "tell application \"Dropbox\" to launch"
osascript -e "display notification with title \"Compress Done\""