2017-03-22 3 views
0

私は次のスクリプトがあります。それは、コードの最も輝かしい作品ではない、と私はむしろそれよりも、「水銀」何かをするだろう、いわばこのスクリプトをカスタム水銀コマンドに変換するには?

#!/bin/bash 

if [ $# -ne 2 ]; then 
     echo -n "$0 - a utility for applying uncommitted changes to a " 
     echo "remote hg repository locally also" 
     echo "Usage: $0 [email protected] path/to/repository" 
     exit -1 
fi 
user_at_hostname="$1" 
remote_path="$2" 

ssh "$user_at_hostname" hg -R "$remote_path" diff | hg import --no-commit - 

を。具体的には、私はmercurialエイリアス/カスタムコマンドを使用して同じことを達成できるかどうか疑問に思っていました。私はできますか?

PS - 私も多分だけでなく差分を取得するリモートリポジトリ上の棚コマンドのいくつかの並べ替えを発行することについて考えていたが、私は事はあまりにも複雑にする必要はありません。

答えて

1

このスクリプトを変更せずにhg fooコマンドに変換する場合は、シェルaliasを使用してください。ただ、最後の行をコピーして、$1$2でカスタム変数を交換してください。

あなたは、これはより多くの「普通の」Mercurialのワークフローのように見えるようにしたい場合は、変更をコミットし、それらを引っ張って開始することができます。私はあなたがこのワークフローを避けていると思いますので、 "oops"コミットでリポジトリの履歴を汚染することなく、これらの変更について心を変えることができます。その場合、Evolve extensionに興味があります。 Evolve拡張は、変更可能な履歴を共有するための、安全で合理的​​に適切なシステムを提供することを目的としています。このようにして、変更をコミットできます。それを別のリポジトリと共有する。変更を修正、再びする、変更する、または変更する。変更したチェンジセットを同じリポジトリまたは別のリポジトリと共有することができます。また、履歴からチェンジセットをプルーニングし、プルーニングしたという事実を共有することもできます。この共有が子孫を持つコミットを修正するなどの問題を引き起こす場合、Mercurialはこれらの問題を検出して、hg evolveで自動的に実行できる修正を提供します(例えば、コミットの新しいバージョンに子孫をリベースします)。拡張はまだ実験的ですが、基本的にはほとんどの簡単な使用例で機能します。

実験的なソフトウェアは、あなたに興味がない場合でも、non-publishingとしてリポジトリにフラグをすることができます。これは、あなたがリポジトリにプッシュした後でも、このようなhg rebasehg histedit、およびhg stripとして、より伝統的な歴史編集機械を使用できるようになります。しかし、1つのリポジトリで破壊されたリビジョンは、展開の進化なしに他のリポジトリから自動的に消えません。あなたは手でそれらを剥がす必要があります。

最後に、hg push --forceリビジョンを破棄しないように注意してください。新しい匿名ブランチが作成され、通常は面倒な履歴が作成されますが、実際にはデータが失われることはありません。この方法ではgitとは異なります。

+0

私は非常にあなたの最初の段落に従っていませんでした。最後の行にシェルエイリアスを使用し、 '.hgrc'エイリアシングをまったく使用しないことを意味しますか? – einpoklum

+0

'.hgrc'エイリアス、特に任意のシェルコマンドを実行できる種類を使用するべきです。これらを「シェルエイリアス」といいます。 – Kevin

関連する問題