Come evitare la corruzione Mercurial repo se condividono un repository tra Windows / Mac?

StackOverflow https://stackoverflow.com/questions/2921495

  •  05-10-2019
  •  | 
  •  

Domanda

Ho diversi progetti che sono condivisi tra Windows e Mac. La macchina dev è un Mac con Parallels: i file sono memorizzati sul lato Mac, e la fonte è condivisa dalla parte di Windows. Questo è molto comodo, come posso passare avanti e indietro tra Windows e Mac strumenti rapidamente senza dover sincronizzare i file.

Di recente sono passato da Subversion a Mercurial, e ora sto avendo problemi con il repository Mercurial corrompersi se utilizzare gli strumenti di Windows per aggiungere / aggiornamento, ecc devo essere molto attenti a che le operazioni sul lato di Windows sono al sicuro (soprattutto la roba di sola lettura) e, naturalmente, ho dimenticato piuttosto regolarmente.

Qualcuno sa il motivo per cui si verifica la corruzione? Ho pensato repository Mercurial sono indipendente dalla piattaforma. Tutte le idee come prevenirla senza rimuovere gli strumenti di Windows del tutto?

È stato utile?

Soluzione

Sono sia sul lato finestre e il lato OSX utilizzando la stessa versione di Mercurial. Mercurial ha compatibilità grandi all'indietro a livello di rete e file in che qualsiasi versione può spingere / tirare / impegnano a repository di qualsiasi versione precedente, ma non è compatibile con l'ora, quindi se le finestre lato è utilizzando mercuriale 1.0 e il vostro lato OSX è a 1.5 poi le finestre non dovrebbero essere commettendo ad un clone creato dal lato OSX.

In generale, mercuriale è stata costruita per un clone-per-user-per-sistema e che hanno le azioni contrastanti mediate attraverso il tira e molla. pronti contro termine in comune accessibile da più client per le azioni locali di sola piace impegnarsi non è il caso d'uso consigliata.

La modifica su entrambi i sistemi va bene, ma si impegnano a partire da soli OSX. Sulle finestre laterali si potrebbe far valere che mettendo qualcosa di simile nel tuo profilo_utente file%% \ Mercurial.ini:

[hooks]
pre-commit = c:\doesnotexist.exe

Questo dovrebbe essere sufficiente per il gancio di fallire, che si fermerà il commit da passare attraverso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top