2012-02-02 14 views
6

私は1人のシングルフォルダのMercurialリポジトリを持っています。ディレクトリ構造は単純です:私はちょうどにファイルを追加しようとしている場合、私は、今、このMercurialのディレクトリ構造を変更する

P104 
    lecture_notes 
    files under version control live here (.hg is here) 
    homework 
    more files under version control 

のように、私は、リポジトリ内の2つのディレクトリを持つようにしたい実現しばらく

P104 
    lecture_notes 
    files under version control live here 

リポジトリは、それが失敗します。

[email protected]:~/P104/lecture_notes$ ll .. 
total 16 
drwxr-xr-x 4 br br 4096 2012-02-02 18:05 ./ 
drwxr-xr-x 4 br br 4096 2012-02-01 20:46 ../ 
drwxr-xr-x 2 br br 4096 2012-02-02 17:44 homework/ 
drwxr-xr-x 4 br br 4096 2012-02-02 18:06 lecture_notes/ 
[email protected]:~/P104/lecture_notes$ hg add ../homework/hw1_P104.tex 
abort: ../homework/hw1_P104.tex not under root 

私の最初のアイデアは、ディレクトリ構造内のレポ1レベルアップをクローンクローンにファイルを追加し、オリジナルのレポを削除することでした。しかし、たとえクローニングは失敗します。

[email protected]:~/P104/2011/lecture_notes$ hg clone . .. 
abort: destination '..' is not empty 

そこで問題は、どこか他のきれいなリポジトリを作成し、手動でファイルをコピーするよりも、この他を行うのはMercurialっぽい方法がありますかどうか?

+1

+1 - バージョンコントロールを学ぶには素晴らしい方法です。 ;) – jmort253

答えて

4

あなたのMercurialリポジトリのルートディレクトリは~/P104/lecture_notes下にある場合、私はむしろ希望:

  1. は、サブディレクトリlecture_notes
  2. は、その新しいサブ内のすべての既存のファイルを移動させるlecture_notes
  3. P104に名前を変更しますディレクトリ
  4. homeworkとそのファイルを名前を変更したP104ディレクトリに追加
  5. hg add everythi NG

アイデアは、その名前を変更したディレクトリ内のファイルを、それがどこにある.hgレポを保つ(~/P104/lecture_notes~/P104/P104に改称)と再編成することです。
複製する必要はありません。

+0

本当に単純です。ありがとう! –

7

私は.hgフォルダを移動しないVonCのソリューションが好きです。それは簡単な解決策です。ここではあなたがそれを移動を行うので、少ないフォルダの名前を変更する必要があり代替です:

  1. 移動.hgフォルダまでのMercurialの観点から見~/P104

    $ mv ~/P104/lecture_notes/.hg ~/P104 
    

    には、あなたが持っていますすべてのトップレベルファイルをlecture_notesディレクトリに移動しました。また、突然新しい未追跡のファイルがhomeworkフォルダにあります。

  2. は、名前の変更からMercurialの姿をしてみましょう:

    $ hg addremove 
    

    これは正しく今の前にトップレベルのファイルだったファイルはlecture_notesディレクトリに住んでいることを検出します。拡張されていない(および無視されていない)ファイルはhomeworkに追加されました。

  3. 変更を保存します:

    $ hg commit 
    

全体的な「トリック」は作業コピー中のファイルが.hgディレクトリへの相対見られているということです。したがって、ファイルシステム階層内の.hgディレクトリを移動することによって、作業コピーファイルを作業コピー内の階層内に効果的に移動します。

+1

ありがとう! 'addremove'について知っておきたいことです。次回私はこの問題を抱えていますが、このソリューションを使用します(手動で 'hg add'と' hg remove'ファイルを実行しなければならないVonCの方法で) –

関連する問題