How usable is Bazaar on Windows?

John Arbash Meinel john at arbash-meinel.com
Wed May 30 17:20:03 BST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Alexander Belchenko wrote:
> Dennis Benzinger пишет:
>> I have a few questions about how usable Bazaar is on Windows:
> 
> It's hard question to answer without context.
> What you need exactly?
> 
>> - What problems are caused by a case insensitive filesystem like FAT?
> 
> 1) You cannot checkout tree created on Linux that has files differ in case.
> I never try it, but I'm sure such attempt fails horribly.

In general you get a late conflict when it tries to create the new file.
This is something we hope to fix. (In general, by just marking the files
as conflicted and renaming one of them to .moved or somesuch)

> 
> 2) If you or some 3rd party program change case of filename, bzr will
> think that original file is missing and new filename mark as unknown.
> 
> 3) You cannot directly rename file to name that differs only in case.
> But you can rename it manually and then run 'bzr mv --after'. And this trick works.
> 
> You can read my Specification Draft:
> http://bazaar-vcs.org/CaseInsensitiveWorkingTreeSupport
> for other ideas.
> 
>> - Does using NTFS help?
> 
> Nope. NTFS is also case-insensitive filesystem (CIF).
> 
>> - Can I avoid these problems by avoiding filenames which differ only in
>>   their case?
> 
> Yes, of course. Why not?
> 
>> - What other problems do I have to be aware of?
> 
> 1) On win98 dirstate is not working at all.

win98 is not a well supported platform at this point. The specific
problem with dirstate is that win98 doesn't support shared locks, only
exclusive ones. (No LockFileEx call).

If it is important enough for someone, we'll help them implement it, but
at this point it isn't high priority for most of us.

> 2) line endings :-/

As in, we don't automatically change line endings for you. We leave the
files line-endings at the same level as whatever tool you used to create
them.

There are some discussion about how to automatically manage
line-endings, at the moment we have gone the "safe" route, and don't
automatically change line endings for you. (I personally have been bit
very hard by both CVS and darcs when they try to be nice, so I prefer
having a tool that lets me get it right rather than out-guessing me).

Most likely we will evolve the ability to set a property per-file, which
says how line-endings will be handled. But it isn't there yet.

> 3) If you want to checkout tree with symlinks you need my plugin win32symlinks.
> But bzr don't support NTFS-native (sym)links to directories.

The #1 reason we don't support NTFS symlinks is because they aren't a
very good idea. I read up on them, and they:

  a) Only work on directories, so it still wouldn't solve most use cases
  b) From everything I've read, they are a bit experimental, and not
     really recommended. (I was reading about disk corruption, etc from
     using them).
  c) If you are really versioning symlinks, then you probably want them
     to do something other than what Windows would do with them, anyway.
  d) I think it is possible to use cygwin if you really need Windows
     symlinks. (Note that cygwin encurs some pretty large performance
     overhead, so I would generally recommend against using it)

> 4) If you want to control x-bit in the tree you need my plugin x_bit

This is only needed if you need to change the executable bit from a
windows machine. Though because Windows doesn't support/do anything with
the executable bit, I'm not sure what the use case is.

> 
> One more note: Windows by default don't have some useful uitlities,
> like less, patch, diff etc. You can find ported versions at http://gnuwin32.sf.net
> 
> [µ]

Just to be clear, these are useful *outside* of bzr. We don't actually
need any of them for operation. (People like to "bzr log | less" more
than "bzr log | more", for exaple).

Probably the biggest thing is that the win32 gui is still a little bit
basic.
http://bazaar-vcs.org/Olive

However, there is a Google Summer of Code student who is working on
"TortoiseBzr" (bzr integration into Explorer).
http://bazaar-vcs.org/TortoiseBzr

Basically, using the same dialogs, etc, but spawning them from Explorer,
rather than as a standalone app. As I understand it, he already has icon
overlays working, and is mostly focussed on caching. Because of how
Explorer relays information to plugins, you pretty much have to run a
daemon so that you don't perform expensive queries for every file.
(TortoiseSVN uses the same mechanism).

John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGXaQzJdeBCYSNAAMRAm1xAKCK4ZPm1Tjmk7HsRIZs8zeUBsdx0wCeOeUl
qa223M6INU+lQaOpAQy+s5k=
=iWEi
-----END PGP SIGNATURE-----



More information about the bazaar mailing list