Yohanes Santoso wrote:
> Hendy Irawan <[EMAIL PROTECTED]> writes:
>
>   
>> Yohanes Santoso wrote:
>>     
>>>> iya... "salah" :)
>>>>
>>>> di Bazaar, setiap branch itu ya satu branch sendiri. Jadi nggak kayak
>>>> git, di mana satu repository bisa berisi puluhan bahkan ratusan branch.
>>>>
>>>> Kalo di Bazaar, satu branch ya satu URL.
>>>>
>>>>         
>>> Jadinya sepertinya git sama seperti arch: membedakan antara repository
>>> dan branch. Ini juga mirip kebanyakan VCS lainnya karena memang ini
>>> pandangan traditional dari sejak jaman CVS.
>>>
>>> Sedangkan bazaar sepertinya meniru darcs dimana satu
>>> directory/repository adalah satu branch. Di darcs, membuat branch
>>> adalah: cp -a kantor kantor-rahasia.
>>>
>>>
>>> YS.
>>>
>>>
>>>       
>
>   
>> Saya tidak setuju dengan deskripsi di atas, kalo git "mirip
>> kebanyakan CVS lainnya dari zaman CVS".
>>     
>
> Subjectnya dari "mirip kebanyakan CVS lainnya dari zaman CVS" bukan
> "git", tapi adalah perbedaan antara repository dan branch. Tepatnya,
> dari konteks percakapan, adalah: lokasi repository dan lokasi sebuah
> branch instance itu berbeda, mirip kebanyakan VCS lainnya dari jaman
> CVS.
>
>
> YS.
>
>   
Yup. Dalam konteks tersebut, maka git lebih "tidak mirip" lagi. Karena 
di git, lokasi repository dan lokasi branch adalah sama.

Dan dalam kasus local, maka di tempat tersebut juga terdapat working tree.

Ini skema Git:

app/        <== "parent folder". berisi git repo+branch+working copy
*   .git/      <== repo + semua branch, dalam format filesystem git
*    .....        <== working tree

Ini Bazaar dalam modus normal:

app/        <== "parent folder". berisi branch bazaar
*   .bzr/      <== branch data + repository untuk branch ini juga
*   ......      <== working tree

Ini Bazaar dalam modus repository:

app/        <== "superparent folder".
*   .bzr/      <== repository+branch data utk semua branch
*   branch1/     <== working tree untuk branch1
*   branch2/     <== working tree untuk branch2
*   branch3/     <== working tree untuk branch3

Yang saya maksud sebelumnya, "git: satu repository bisa berisi ratusan 
branch", adalah "bukan secara fisik", jadi bukan berarti bahwa di dalam 
repository git terdapat ratusan subfolder di mana masing-masing branch 
adalah satu folder.

Quite the contrary. Di dalam git, semua branch masuk ke folder 
"filesystem" yaitu .git/, dan formatnya sendiri adalah internal.

Working tree sebuah branch di dalam git adalah di folder itu sendiri.

Bagi yang workflownya selama ini memakai "setiap working tree adalah 
satu folder", mungkin akan lebih jelas ilustrasinya secara "live":

trunk> git-branch -a
* dehobo_local
  dehobo_restful
  master
  restful-generate
  restful-merged
  title-helper
  add-timezone
  dehobo
  trunk

trunk> git-log -n3 --pretty=oneline
0156450da8b3b445cf0a30b5c80a15fa918d59d9 User model fixed.
a143adf5f5f6a941ca52c13208eda92fa125f7d7 User.super_user? restored.
dd3f4d5d9d0e1ef324436b016d9e59b750ac6223 Activated all users. Users can 
login again.

trunk> git-checkout master
Switched to branch "master"

trunk> git-log -n3 --pretty=oneline
e1bd9c6f48f1e42e79c196bab05c0848ab273a37 merge from deinfect-hobo branch
60f2f2d2746a9329dd24b80efc1fac809e421d2f Fixed Your Account
86b42149721115b3817a541bc2046cd177af7ddc merged from more title helpers

trunk> git-checkout title-helper
Switched to branch "title-helper"

trunk> git-log -n3 --pretty=oneline
86b42149721115b3817a541bc2046cd177af7ddc merged from more title helpers
f55727ecc214231287bcf2a7fcb224086f9b4949 more title helper again
0a754410a55de18c84b15bbf97f6203a92c03d43 more title helper

trunk> git-branch -a
  dehobo_local
  dehobo_restful
  master
  restful-generate
  restful-merged
* title-helper
  add-timezone
  dehobo
  trunk


Di situ terlihat bahwa, lokasi repository, branch, dan working-tree-nya, 
adalah di satu folder itu sendiri. Termasuk apabila kita ingin pindah ke 
working tree dari branch lain, foldernya tetep sama :)

Pertanyaannya mungkin, bagaimana kalo kita ingin bikin dua working tree 
yang berbeda dari satu repository yang sama? Saya sendiri belum tau cara 
yg "asli", tapi selama ini sih saya pake "cp -a" :)


Sedangkan deskripsi Bazaar  mas Yohanes memang akurat, setiap branch ada 
di folder itu sendiri, tapi itu hanya berlaku apabila Bazaar dalam modus 
"normal". Kalo dalam modus repository, maka branch berada di dalam 
subfolder sebuah repository.

Branching di Bazaar pasti menggunakan "bzr branch", bukan cp -a, 
meskipun secara teknis copy bisa digunakan untuk menduplikasi branch 
secara utuh, tapi sepertinya bzr branch juga mengupdate 'metadata'...

Dan dalam kasus Bazaar dengan style repository, 'bzr branch' tidak bisa 
digantikan oleh 'cp -a', karena dalam kasus tersebut sebuah branch 
bazaar hanya berisi working tree-nya saja.


Saya berasumsi bahwa istilah "repository" yang dimaksud mas Yohanes 
adalah "local repository", atau simply repository secara umum.

Di Bazaar maupun Git tidak ada diskriminasi antara local dan remote. 
Setiap repository dapat dijadikan "remote repository", tinggal 
menambahkan server yang diinginkan atau bisa juga simply lewat SSH (kalo 
bazaar, bzr+ssh://, kalo git belum tahu, selama ini saya belum pernah 
ngepush ke git repo remote, cuma pake git-svn buat ngepush/pull dari 
remote svn)

-- 
Hendy Irawan
www.hendyirawan.com

Kirim email ke