We may be easy, but we’ve got standards.
Паддрэва зліцця ў якасці альтэрнатывы падмодуляў git svn
Мы выкарыстоўваем Subversion як наша сістэма кантролю версій для ўсіх кліенцкіх працы тут, у Easy, таму што мы проста ў захапленні Springloops ‘Хостынг паслуг , але мы выкарыстоўваем Git для усіх нашых праектаў з адкрытым кодам , таму што, ну, Git шмат весялей працаваць, і мы кахаем супольнасці, убудаваная вакол GitHub. Для таго каб мець лепшае з абодвух светаў пры працы на кліенцкіх праектаў, мы выкарыстоўваем Git-SVN , як наш фронт-энд у Subversion.Гэта выдатная прылада, але ён не без абмежаванняў. Адным з такіх абмежаванняў з’яўляецца немагчымасць перавесці Git падмодуляў у SVN: вонкавыя . Да шчасця, Git прапануе альтэрнатыву, якая з’яўляецца супастаўнай і гуляе хораша з Subversion: Паддрэва зліцця.
Пры спробе dcommit рэпазітар утрымоўвалы падмодуль, вам, хутчэй за ўсё атрымаеце паведамленне так:
952bee47201e87b0b0e851bcbe6c8940d429cda0 doesn’t exist in the repository at /usr/local/git/libexec/git-core/git-svn line 3787
Failed to read object 952bee47201e87b0b0e851bcbe6c8940d429cda0 at /usr/local/git/libexec/git-core/git-svn line 480
Гэта раздражняе паведамленне хваравітым напамінкам пра тое, што вам трэба знайсці іншы спосаб дадаць утрыманне з іншага праекта ў вашым сховішчы. Паддрэва зліцця, на дапамогу!
Калі вы ўжо патрапілі ў памылцы, ісці наперад і выдаліце тэчку падмодуль (ов) і. Gitmodules файл і здзейсніць змены ў сховішча, каб зрабіць шлях ізноў даступныя. Далей, з корпуса ў каранёвым каталогу вашага рэпазітара ўвядзіце наступныя каманды ў камандным радку (замяніць капитализированных фразы з адпаведнай інфармацыі):
git remote add -f LOCAL_NAME PATH/TO/GIT/REPOSITORYgit merge -s ours --no-commit LOCAL_NAME/BRANCH_NAMEgit read-tree --prefix=PATH/I/WANT/IT/IN/ -u LOCAL_NAME/BRANCH_NAME git commit -m "Merge of PROJECT"git pull -s subtree LOCAL_NAME master
Для забеспячэння поўнай меры прапрацаваная прыклад для вас, я выкарыстоўваў наступныя аб’яднаць майстар філіяла eCSStender на шляхі пастаўшчыкоў / ecsstender у рамках іншага праекта.
git remote add -f eCSStender git://github.com/easy-designs/eCSStender.js.gitgit merge -s ours --no-commit eCSStender/mastergit read-tree --prefix=vendors/ecsstender/ -u eCSStender/mastergit commit -m "Merge of eCSStender into the vendors directory"git pull -s subtree eCSStender master
Прыгажосць гэтага з’яўляецца тое, што вы можаце выкарыстоўваць яго апошняму радку, каб выцягнуць у апошняй версіі вонкавага праекта, а затым усё, што вам трэба зрабіць, гэта dcommit змен, каб іх у Subversion. Праблема вырашана.
