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

