Hi,
> I began looking into fossil because I wanted a *simple* and *easy* SCM 
> that I could give to people who are not experienced with SCMs. My boss 
> asked me to find a solution to let people contribute to small 
> developing projects. Many of these are students, others are school 
> teachers who taught themselves basic programming skills. The idea is 
> to have a place for them to put their code, without creating a lot of 
> complexity or difficulty for them.
Then use Visual SourceSafe, or Subversion.  They are simple to 
understand: a network filesystem with an added dimension for time 
(revisions).

With any DVCS users must understand the distinction between a repository 
and a working set, and they must understand branching and merging.  
Obtaining the files changes from "get" (or checkout or update, depending 
on your VCS) to "clone, open" or "pull, update".  Committing a change 
changes from "commit" (or checkin) to "commit, push".  The extra steps 
are not obvious to users who don't understand the DVCS paradigm, and can 
be very confusing ("I committed it, why can't he see it?"  "Oh, you 
committed it but you didn't push it"  "?!?").

These are not simple concepts.  In development companies it can take new 
recruits (graduates, possibly with experience) weeks to get comfortable 
with a VCS, and indications are that DVCS takes longer.

You also need to have all your projects in one repository, or one 
repository per project.  Unlike a centralised VCS, partial (subtree) 
checkouts are not possible.  So the former option just means extra 
traffic and storing for someone working on a single project; the latter 
means extra working if you need to sync and work on multiple projects.  
Furthermore the granularity of access control is at repository level 
(you either have access to the entire contents of a repository, or to no 
contents of the repository).
> I began looking at fossil because it claimed to be simple and easy 
> (plus I liked the incorporated wiki and bug tracker). After evaluating 
> it for a few days, I am leaning to think that fossil is *not* that 
> simple and that it is *not* suitable for beginners who don't have a 
> lot of patience or knowledge.
Since I'm not a beginner I can't comment on that ;p

On the other hand I don't have a lot of patience.  When I started with 
Fossil a few months back, it was after evaluating (read: install on my 
PC, play with, install on a server, play more) bazaar and hg.  Fossil 
was significantly easier to use both locally and to get working on a 
server (I would use the word "trivial" for server installation, quite 
unlike bazaar/hg).

>> Let's say we took the second option.  While I'm working in B, I 
>> finish my work in A.  I push my changes and delete A ... and WHOOPS!  
>> I just screwed up B, didn't I?
> Why would that screw up B? If making a little branch like that screws 
> up the SCM then the SCM sucks. The whole reasons why we have SCMs so 
> to allow concurrent development.
When you clone REMOTE to A, a note is made in A that you cloned from 
REMOTE.  So when you are working in A and you push or pull or sync it 
knows that the endpoint of that operation is REMOTE.

When you clone A to B, a note is made in B that you cloned from A.  So 
when you are working in B and you push or pull or sync it knows that the 
endpoint of that operation is A.

Then you delete A.  And you go into B and make some changes, and commit, 
and push.  And it says "Can't.  A is missing".  And you have to 
explicitly tell it that you want to sync with REMOTE instead of A.

That sequence applies to Fossil, Git, Hg, Bazaar, and DVCS in general.

It also leads to some WTF behaviour.  For example, you make a change to 
A, commit, push.  Then you make a change to B, commit, push.  Then you 
delete both A and B because you've finished and pushed the changes.

Did you notice that you lost the changes you made in B?  Because you 
pushed them to A, not to REMOTE?  That happens a lot with new users of 
git, bazaar and hg, because each working set on your PC has an attached 
repository.  With Fossil there is one local repository with multiple 
local working sets, so you don't have this problem.

>> Fossil keeps the concept of the repository and the working set distinct.
>
> Btw, AFAIK the only SCM that joins these concepts is Darcs.
Wrong.  Git, Hg and (depending on your workflow) Bazaar all keep a 
repository clone local to the working set.  Then they muck with 
hardlinks and copy-on-write to try and conserve disk space and improve 
performance.  (You don't want to use these on a FAT32 filesystem)

Regards,
Twylite





_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to