पुश या कॉन्फिगर बदलाव के बिना रिकोकाइल हेरोकू स्लग


147

मैं सोच रहा था कि क्या कोई तरीका है कि हरको को नए कमिट्स को धक्का दिए बिना और / या चर चर को अपडेट किए बिना स्लग को फिर से जोड़ने के लिए मजबूर किया जाए।

मैं ऐसा क्यों करना चाहूंगा? "

मैं एक रेल 3.2 एप्लिकेशन के लिए हरोकू पर देवदार स्टैक का उपयोग कर रहा हूं, और मुझे rake assets:precompileकार्य में विफलता (केवल संकलन के दौरान --- बाद में यह ठीक काम करता है heroku run) के साथ समस्या हो रही है । मुझे बहुत संदेह है कि कुछ पर्यावरण चर चर संकलन समय के दौरान उपलब्ध नहीं होने के कारण है, और मुझे लगता है कि heroku labs:enable user_env_compileप्रायोगिक सुविधा इसे हल करेगी।

हालाँकि, इस user_env_compileसुविधा को चालू करने के साथ, विन्यास परिवर्तन स्लग के पुनर्संयोजन को ट्रिगर नहीं करता है, और मेरा कोड नहीं बदला है, इसलिए मेरे पास पुश करने के लिए कोई नया कमिट नहीं है।

बेशक, मैं एक "डमी" को एक तुच्छ परिवर्तन के साथ प्रतिबद्ध कर सकता हूं, जो शायद सबसे सरल उत्तर है --- लेकिन मैं सोच रहा हूं कि क्या एक हॉकोकू कमांड है जो मुझे सीधे स्लग को फिर से खोलने देगा।

धन्यवाद!


1
Heroku CLI क्लाइंट में कुछ भी नहीं है?
मैट बॉल

प्रत्यक्ष उत्तर नहीं है, लेकिन यह हमेशा SAAS सुविधाओं पर निर्भर होने जैसे निर्भरता में परिवर्तन करने वाले दस्तावेज़ों के लिए बुद्धिमान है, आदि। मेरी सलाह है कि CHANGELOG में एक प्रविष्टि जोड़ें, जिसमें कहीं न कहीं यह उल्लेख है कि अब आप इस सुविधा पर निर्भर हैं, और उस परिवर्तन को फिर से शुरू करने के लिए उस बदलाव को आगे बढ़ाएं। स्लग।
patcoll

जवाबों:


93

स्लग संकलन को गिट प्री-रिलीव हुक के साथ लागू किया जाता है, इसलिए एक नई प्रतिबद्धता को आगे बढ़ाने का एकमात्र तरीका है।

पूर्णता के लिए स्लग कंपाइलर के लिए हरोकू पर यह लेख देखें । इसने संकलन शीर्षक के तहत स्लग संकलन प्रक्रिया को लागू करने के लिए प्री-रिलीवर हुक के उपयोग पर चर्चा की।


23
आपके उत्तर के लिए धन्यवाद। यह सच है कि एक पूर्व-प्राप्त हुक स्लग को संकलित करता है। (देखें, उदाहरण के लिए: devcenter.heroku.com/articles/slug-compiler )। इसका मतलब यह नहीं है कि हरोकू स्लोक संकलन जैसे एक हॉकू सीएलआर कमांड को लागू करने के लिए एक वैकल्पिक तंत्र प्रदान नहीं करता है (या नहीं कर सकता है)। उस ने कहा, किसी ने भी इस तरह के आदेश का उल्लेख नहीं किया है, इसलिए मैं मान रहा हूं कि आपका उत्तर कम से कम अभी के लिए है। धन्यवाद!
नाथन

1
@ नाथन शायद आप हेरोकू टूलबेल के माध्यम से स्लग संकलन को ट्रिगर करने के तरीके के लिए हरोकू समर्थन पूछ सकते हैं? यदि वे इसके लिए जाते हैं, तो एक और उत्तर जोड़ें!
14

7
अब एक उपाय है। द हेरोकू-रेपो ऐड-ऑन
रेफेल एकरमैन

मेरे लिए FYI यह समाधान तब काम नहीं आया जब मेरे पास js फ़ाइल में सेटिंग के लिए एक नया ENV मान था जो Rails application.js में संकलित हो जाता है। यह जेएस फ़ाइल के लिए एक स्थान ले रहा है और वास्तव में फिर से इकट्ठा करने के लिए संपत्ति प्राप्त करने के लिए एक धक्का है।
जोश डाइथल

12
repo:rebuildप्लग-इन में अब एक मान्य कमांड नहीं है, जैसा कि यहां देखा जा सकता है: github.com/heroku/heroku-repo/commit/…
21st41 को अंधापन

234

अब के लिए सबसे सरल वर्कअराउंड एक खाली कमिट को पुश करना है

git commit --allow-empty -m "empty commit"
git push heroku master

53
आप ऐसा कर सकते हैं और पिछली प्रतिबद्धताओं को बलपूर्वक आगे बढ़ाकर एक स्वच्छ प्रतिबद्ध इतिहास रख सकते हैं git reset HEAD~; git push -f heroku master:। एक और हरोकू की तैनाती के समय की लागत को बढ़ाता है, लेकिन स्वच्छ इतिहास FTW।
पॉल एन्सले

2
बस इसे अपने ~/.profileऐड में एक उपनाम के पूरक के लिए : alias heroku-rebuild="git reset HEAD~; git push -f heroku master"या alias heroku-rebuild="git commit --allow-empty -m 'empty commit' && git push heroku master"तो आप बस टाइप कर सकते हैंheroku-rebuild
अनम्यूटेडियो

30

मेरा सामान्य दृष्टिकोण है:

git commit --amend -C HEAD
git push heroku:master -f

यकीन नहीं है कि मैं कुछ निश्चित किए बिना उत्पादन में ऐसा करूंगा, क्योंकि यह तकनीकी रूप से अंतिम प्रतिबद्ध को फिर से लिखता है, लेकिन यह सिद्धांत में किसी भी मुद्दे का कारण नहीं होना चाहिए। जब आप मंचन में चीजों का परीक्षण कर रहे हों तो यह पूरी तरह से ठीक है।

एक अतिरिक्त बोनस के रूप में क्योंकि ज्यादातर लोगों को कमिट करने के लिए वीआईएम का उपयोग करने में समस्या SHIFT-ZZहोती है, इससे कोई भी बदलाव किए बिना आपके लिए प्रतिबद्ध संदेशों को जल्दी से सहेजा जाएगा और बाहर निकल जाएगा।

एक संबंधित नोट पर मैं हल्के से हैरान हूँ हेरोकू में अभी भी यह सुविधा नहीं है। मैंने अक्सर देखा है कि हरोकू अपने अंत में समस्याओं के कारण तैनात करने में विफल रहता है।

-C HEADएक संपादक को खोलने से बचने के लिए उपयोग करने के विचार के लिए माइकल मिओर को धन्यवाद ।


2
या बस git commit --amend -C HEADएक संपादक को खोलने से बचने के लिए उपयोग करें और प्रतिबद्ध संदेश को समान रखें।
माइकल मिओर

धन्यवाद @MichaelMior यह मेरे लिए बहुत अच्छा काम किया और मेरे कथित इतिहास के साथ खिलवाड़ नहीं किया।
जेम्स वार्ड

यहां एक बात ध्यान रखनी चाहिए कि यदि आपके पास एक अलग केंद्रीय रेपो (हेरोकू के अलावा) है। यदि ऐसा है, तो इससे अगली बार जब आप पिछली प्रतिबद्ध को बाहर कर देंगे, तो इतिहास में कमेटी का विलय / दोहराव होगा।
निक एफ

यह इतना विरोधी उपयोगकर्ता क्यों है?
सौभाग्य

20

हरोकू ने एक प्लगइन जारी किया है जो पूछा जाता है: https://github.com/heroku/heroku-repo

इसे स्थापित करने के लिए:

$ heroku plugins:install heroku-repo

एक पुनर्निर्माण के लिए मजबूर करने के लिए:

$ heroku repo:purge_cache -a appname
$ heroku repo:reset -a appname
$ git push heroku

15

अपडेट: हरोकू रेपो: पुनर्निर्माण को हटा दिया गया है

हरोकू में एक बिल्ड एपीआई है जिसका आप उपयोग कर सकते हैं, देखें: एपीआई का उपयोग करके बिल्डिंग और रिलीज़ करना


आप रेपो का उपयोग कर सकते हैं : हेरोकू-रेपो ऐड-ऑन पर कमांड का पुनर्निर्माण करें।

heroku repo:rebuild -a appname

https://github.com/heroku/heroku-repo


3
बस दूसरे धागे पर भी टिप्पणी की गई है, लेकिन यह यहां दोहराने लायक है: द हेरोकू-रेपो एडोन अच्छा दिखता है, लेकिन इसे आज़माने के बाद मैं इसकी सिफारिश नहीं करता। एक खराब बग है: यह --app फ्लैग को नजरअंदाज करता है। इससे मुझे गलती से हमारे उत्पादन वातावरण का पुनर्निर्माण करना पड़ा, जब मैं मंचन का पुनर्निर्माण करना चाहता था। यह बग बिना किसी रिज़ॉल्यूशन के एक साल से अधिक समय से रेपो के खिलाफ खुला है। मैंने इस प्लगइन की स्थापना रद्द कर दी है।
jasoncrawford

6
हेरोकू-रेपो के वर्तमान संस्करण का पुनर्निर्माण नहीं हुआ है
माइक स्लिन

मुझे रिमोट रेपो को रीसेट करना होगा क्योंकि पुनर्निर्माण कमांड काम नहीं कर रहा है
vaibhav jain

आपने अपडेट किया और आप कहते हैं कि यह "बिल्ड एपीआई" के साथ काम करता है, लेकिन मैं वास्तव में यह नहीं समझता कि यह कैसे काम करता है ... कोई मदद? क्या मुझे अपने ऐप के पुनर्निर्माण के लिए एपीआई के लिए एक HTTP पोस्ट अनुरोध भेजना होगा? किस पर ? एक टोकन (सुरक्षा कारण) है?
बांध फा

9

ऐसा लगता है कि अभी तक उपलब्ध नहीं है। हालाँकि, एक सुविधा अनुरोध heroku github repo पर खोला गया है

इसमें यह भी कहा गया है कि "निर्माण का एक वैकल्पिक तरीका जिस पर निर्भर नहीं है git push"

https://github.com/ddollar/heroku-anvil


5

इसके लिए एक heroku प्लगइन है।

$ heroku plugins:install heroku-releases-retry
Installing plugin heroku-releases-retry... done
$ heroku releases:retry
Retrying v16 on ⬢ murmuring-lowlands-3398... done, v17

3
यह एक असफल रिलीज के बाद रिलीज को फिर से करेगा। यह एक असफल निर्माण का पुन: प्रयास नहीं करेगा।
जेरेमी

-3

शाखा निकालें, फिर इसे फिर से धक्का दें। कोई प्लगइन का उपयोग करने की आवश्यकता है।

git push heroku :master
git push heroku master

परिणामस्वरूप "पुश अस्वीकृत, मास्टर शाखा को नहीं हटा सकता"।
स्केले

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.