De la façon dont votre question est formulée, je pense que vous pouvez avoir des malentendus liés à la terminologie de contrôle de version.
Vous devez disposer d'un seul référentiel pour chaque projet. Vous pouvez considérer un référentiel simplement comme un dossier sur le système de fichiers. Lorsque vous initialisez un référentiel Mercurial dans un dossier particulier, chaque fichier de ce dossier et de ses sous-dossiers peut être ajouté au référentiel pour être contrôlé par la version. Vous n'avez pas forcément besoin d'ajouter tout, mais n'importe lequel pourra être ajouté si vous le souhaitez.
Vous pouvez envoyer ce référentiel local vers un référentiel distant si vous le souhaitez, soit sous forme de sauvegarde, soit en tant que méthode de partage de votre code avec d'autres. Mais s'il s'agit simplement d'un projet personnel, cela ne sera probablement pas nécessaire, d'autant plus que vous avez déjà une solution de sauvegarde en place.
Les branches sont généralement utilisées pour conserver différentes "versions" du projet séparées. Comme certains l'ont mentionné, cela peut être utile en tant que développeur solo pour essayer une méthode de refactorisation du code, ou tester une approche différente d'un problème particulier. Si cela ne fonctionne pas, vous n'avez pas à vous soucier de savoir où retourner, vous venez de brûler la branche. Si cela fonctionne, vous fusionnez la branche dans le dépôt principal (le "tronc") et continuez.
Si vous arrivez au point où vous créez des "versions" du code, et que vous devez conserver les anciennes versions, vous devez également utiliser des branches. Par exemple, imaginez que vous libérez la version 1.0, et que certaines personnes commencent à l'utiliser. Pendant qu'ils l'utilisent, vous continuez en privé à travailler vers la prochaine version, peut-être 1.1, en ajoutant des fonctionnalités dans votre référentiel de jonctions. Maintenant, quelqu'un découvre un bogue dans le code 1.0 publié que vous devez corriger, mais vous ne pouvez pas le réparer dans le tronc et lui donner ce code, car il n'est pas dans un état à être libéré. C'est là que la branche 1.0 est utile. Vous pouvez corriger le bogue dans la branche 1.0 et fusionner la modification du bogue dans le tronc, de sorte que le bogue soit également corrigé. Ensuite, vous pouvez reconfigurer 1.0 avec la correction de bogues et le transmettre à vos utilisateurs, sans avoir à comprendre comment mettre le tronc dans un état qui pourrait être publié au public. En dehors de cela, il n'y a généralement pas beaucoup de travail sophistiqué impliqué dans l'utilisation de Mercurial solo. Faites un peu de travail, et quand vous finissez une fonction, engagez-la pour vous donner un "point de contrôle" auquel vous pourrez revenir dans le futur si nécessaire. Vous n'avez pas besoin de vous engager à chaque fois que vous sauvegardez ou quoi que ce soit de semblable, faites-le quand vous sentez que vous avez ajouté quelque chose de significatif. Cela vous donnera une bonne histoire du projet si vous avez besoin de regarder en arrière.
Pour plus d'informations, je suggère fortement de prendre le temps de lire ce livre: Distributed revision control with Mercurial. Vous n'avez pas besoin de lire les sujets avancés, mais lire au moins les chapitres 1-5 et 8 vous donnera une bonne introduction à Mercurial et au contrôle de version en général.
Quelle est votre motivation pour utiliser Mercurial? IMO, pour un seul développeur svn plus que suffisant. – yanchenko
Vous devriez étiqueter, pas brancher de nouvelles versions. J'ai répondu ci-dessous. –
@gsmd Certains d'entre nous aiment commettre off-line :) J'aime faire de nombreux petits commits et ensuite pousser, tout en gardant un ensemble ordonné de patches à portée de main pour les gens qui ont téléchargé le tgz source. Je suppose que c'est une question de préférence. –