Ich möchte wissen, ob es eine Möglichkeit gibt, den Standard-Push zu deaktivieren, aber den Standard-Pull beibehalten, wenn Sie Mercurial verwenden. Ich möchte das Master-Repository nicht unbeabsichtigt verschmutzen, indem ich unabsichtlich aus einem experimentellen Repository schiebe.Kannst du Standard-Push verhindern, aber Pull zulassen?
Antwort
Ihre Lösung ist wahrscheinlich die schnellste und ist sicherlich effektiv. Wenn es irgendeine offizielle Art und Weise wäre es ein preoutgoing
Haken werden:
[hooks]
preoutgoing = bash -c 'read -p "Really push to $HG_URL? " -n 1 RESP ; [ "$RESP" == "y" ]'
, die Sie fragt, ob Sie schieben wollen und die URL zur Verfügung stellen, auf die sie als Erinnerung gehen würde.
Ich konnte das lösen, indem ich folgendes in meine .hg/hgrc
Datei setzte, aber ich fragte mich, ob es einen besseren/offiziellen Weg gibt.
[paths]
default = http://server/hg/repo
default-push = .
nie Abwärts Stimme gemeint, klickte aus Versehen. :( – sojin
Diese Antwort funktioniert fast, oder funktioniert meistens, aber kann brechen, wenn "." Ein Repo enthält - zB wenn Sie Ihr Home-Verzeichnis haben. Ich habe es etwas weiter unten ausgearbeitet, um ein solches Problem zu vermeiden. –
@KrazyGlew Ich glaube nicht, dass das notwendig ist. Er sagte, er mache das in '.hg/hrc', also ist es in Repo und damit relativ zur Repo-Wurzel, also würde das immer" zu sich selbst drücken ", was nie etwas tun sollte. –
Ich mag Ihre eigene Antwort paths.default-push = .
der Einstellung - es ist einfach und es ist klar, dass es funktionieren wird.
Eine andere Möglichkeit wäre ein Pre-Push-Haken sein: (. Hier bin ich die Vorteile, wie Sie einen langen Wert über mehrere Zeilen aufteilen, indem sie in einem Mercurial Konfigurationsdatei Einrücken)
[hooks]
pre-push = if [ $HG_PATS == "[]" -o $HG_PATS == "['default']" ]; then
read -p "Really push to default? " -n 1; echo
[ "$REPLY" == "y" ]
fi
Eine Push-to-Standard sieht diese
% hg push
Really push to default? n
warning: pre-push hook exited with status 1
, wo ich die n
getippt. Der Hooks prüft auf keine Argumente ($HG_PATS == "[]"
) und einen Standardwert als Argument ($HG_PATS == "['default']"
) und wird Sie nur in diesen Fällen auffordern. Die Variable $HG_PATS
wurde in Mercurial 1.6 eingeführt.
PS: Ich habe gesehen, dass Sie die Frage aktualisiert und nach einer Lösung in PowerShell gefragt haben, aber ich fürchte, ich weiß nichts über diese Sprache. Sie sollten jedoch in der Lage sein, die wichtigen Konzepte aus dieser Antwort selbst herauszuheben.
This ist ziemlich gut, aber beseitigt es nicht vollständig die Push-Fähigkeit?Ich möchte pushen können; Ich möchte nur sicher gehen, dass ich nicht versehentlich auf den Standard schiebe. – moswald
mos: Du hast Recht ... Ich habe die Antwort aktualisiert, damit du wieder pushen kannst und ich habe auch das Beste aus Ry4ans Antwort eingebaut. –
Danke für das Update. Ich denke, es ist Zeit für mich, eine neue Frage zu stellen: Wie bekomme ich einen Powershell-Befehl, um in einem hg-Hook zu arbeiten? – moswald
Die Antwort zuvor geschrieben, in hgrc
ist fast, aber nicht ganz richtig zu setzen. Es kann z.B. wenn Sie Ihr Home-Verzeichnis hg.
Hier ist die meine aktuelle BKM Standard-Push zu deaktivieren:
ich die Idee der Einstellung paths.default-push verschönert haben in ~/.hgrc, so dass es ein bisschen mehr Selbst Dokumentieren und weniger Fehler -prone - da, wie ich unten anführe, die Standardeinstellung push = ist. Deaktiviert nicht immer das Drücken.
in ~/.hgrc
[paths]
# my main project master repo
project-master = ...
#DISABLING IMPLICIT PUSH
# to prevent embarassment from accidentally pushing to the project master repo
# instead of, in my case, a repo that has fine grain commits
# that the rest of the team does not want to see in the project master repo
#default-push = .
# this works mostly, but NOT if you use hg on your home directory
# since '.' in ~/.hgrc seems to be interpreted as -R ~
#default-push = /NONEXISTENT_default-push_--_must_specify_push_target_explicity
# this works ok, but I can clean up the error message using blanks
# keeping this around because blanks in pathnames confuses many UNIX tools
default-push = /'NONEXISTENT default-push -- must specify push target explicitly'
# this amounts to disabling implicit push targets.
Sie sind wahrscheinlich besser dran, das in '.hg/hgrc' (die pro-Repo-hgrc) für Ihre experimentellen Repos anstatt in' ~ .hgrc' (die pro Benutzer hgrc). Das ist sicherlich das, was MG oben angedeutet hat. Wenn das der Fall ist, ist "." Vollkommen sicher. –
~/.hrc ist genau das, was * ich * will. Ich kloniere Repos sehr, und in diesen Klonen mit frisch gemachten Voreinstellungen möchte ich verhindern, dass ich versehentlich an den falschen Ort zurückschiebe. Das Problem bei der Ausführung in
Übrigens bin ich sehr glücklich mit der Einstellung Standard-Push in ~/.hgrc. Es hat einige Verlegenheit verhindert. Allerdings möchte ich den Standard immer noch vollständig überschreiben - weil ich mir angewöhnt habe, "hg push default" einzugeben. Was NICHT ist, was Sie tun möchten, wenn Ihr Workflow in einen Bereitstellungsbereich verschoben werden soll. Eine andere Frage, vielleicht ... –
- 1. Hotlink verhindern, aber bestimmte Bilder zulassen?
- 2. Kannst du eine Angular JS Website scrappen
- 3. Wie du eine Oracle-Instanz duplizieren kannst?
- 4. Fehler im Validator. Kannst du mir helfen?
- 5. Kannst du das über Kapselung erklären?
- 6. Kannst du die Stimme für Twilio ändern?
- 7. Kannst du deine td-Tags klassifizieren?
- 8. Robots.txt Ordner nicht zulassen, aber Unterordner zulassen
- 9. Kannst du den Linter in grunt.js in jslint ändern?
- 10. Kannst du dem Admin einen guten Django-Dateimanager empfehlen?
- 11. Wie kannst du Posts in Django in der Zukunft bekommen?
- 12. Kannst du den Inhalt einer Get-Anfrage in Angular packen?
- 13. Kannst du eine Bestellung in Ruby nach einem Fund machen?
- 14. Welches Buch über OSX-Interna kannst du empfehlen?
- 15. Wie kannst du in RavenDB Dokumente durch Aktualität steigern?
- 16. Kannst du wirklich eine Funktion/Methode ohne einen Körper haben, aber nur einen Versuch/Catch-Block?
- 17. Kannst du zwischen/3 in reinem Prolog schreiben?
- 18. Wie du meine Open Source Software duplizieren kannst?
- 19. Kannst du den Inhalt unter/hinter einem Div unscharf machen?
- 20. Kannst du mir helfen, diesen regulären Ausdruck zu machen?
- 21. Kannst du PHP in PHP mit echo einfügen?
- 22. Warum kannst du nicht die Adresse von nullptr nehmen?
- 23. Was ist der Unterschied? Kannst du bitte die Syntax erklären?
- 24. Kannst du ein transparentes div auf ein Bild überlagern
- 25. Kannst du Vue.js zwingen, neu zu laden/rendern?
- 26. Kannst du einen Podcast zu OOP & Design empfehlen?
- 27. Kannst du Asp.net MVC View wireless Kompilierzeit sicher machen?
- 28. Kannst du Nachrichten in Camunda lesen wie in Mqueue?
- 29. Kannst du extra Pony von meinem Swift entfernen?
- 30. Kannst du eine * .json Datei in VS2015 transformieren
Hey, ich mag dieses hier, es ist ähnlich wie bei Martin, aber gibt mir die Option, fortzufahren, wenn ich die URL manuell in die Befehlszeile eintippe. Wenn Sie mir sagen können, wie man das in Powershell macht, sind wir im Geschäft. – moswald
Ich denke, der Befehl für komplexe Skripts in Powershell ist wubi.exe. Worüber ich meine, Entschuldigung, ich weiß Powershell nicht. ;) –
Ich habe ziemlich viel experimentiert, konnte es aber nicht ganz zum Laufen bringen. Ich werde weiter wegstecken und hier updaten, wenn ich es löse. – moswald